У меня есть два JS функции, одна из которых является добавление опции в окне выбораКак предотвратить сброс позиции прокрутки страницы после DOM-манипуляции?
function addOption(selectId, text, value) {
var selectbox = document.getElementById(selectId);
var optNew = document.createElement('option');
optNew.text = text;
optNew.value = value;
try {
selectbox.add(optNew, null); //page position resets after this
}
catch(ex) {
selectbox.add(optNew);
}
}
, а другой, что делает document.getElementById (FormID) .appendChild (newHiddenInput) в такой же простой функции.
Они оба работают, элементы добавляются, как ожидалось. Однако при вызове любого из них страница сбрасывает свою позицию прокрутки в верхнюю часть страницы как в IE6, так и в FF. Нет обратной передачи, это чисто клиентская манипуляция. Я установил точки останова в Firebug, и это происходит сразу же после выполнения элемента element.appendChild или select.add. Я знаю, что я могу использовать JS для ручной установки положения прокрутки, но я не думал, что это необходимо, когда страница не перерисовывается.
Я не эксперт с JS или DOM, поэтому я, возможно, очень ничего не заметил, но я посмотрел here и просмотрел их примеры с помощью параметров «Попробовать здесь», и я не могу воспроизвести проблему, указывая на кодовую базу, с которой я работаю, является виновником.
Любые идеи, почему положение прокрутки сбрасывается? jQuery также доступен мне, если он предоставляет лучшую альтернативу.
Спасибо! Функции вызывались из кнопок стиля ". Я переключил их на теги span и устранил проблему. –
Это не (обязательно) решение, но может быть в вашем случае. Для дальнейшего использования при использовании тега привязки вы обычно хотите иметь в нем действительный href, но, возможно, не хотите, чтобы он уходил куда угодно, поскольку вы предотвращаете поведение с помощью javascript. Вот тогда вам нужно использовать «return: false»; –
Да. Вот что я сделал для меня. Теперь я чувствую себя глупо. – dooleyo