Mam dwie funkcje JS, jeden, który jest dodanie opcji do zaznaczaniaJak zapobiec resetowaniu pozycji przewijania strony po manipulacji 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);
}
}
i innym, że robi document.getElementById (formId) .appendChild (newHiddenInput) w podobnie prosty funkcji.
Oboje działają, elementy są dodawane zgodnie z oczekiwaniami. Jednak po wywołaniu któregokolwiek z nich, strona resetuje pozycję przewijania na górę strony zarówno w IE6, jak i FF. Nie ma żadnego odświeżenia, jest to manipulacja wyłącznie dla klienta. Ustawiłem punkty przerwania w Firebug i występuje natychmiast po wykonaniu elementu. AppendChild lub select.add. Wiem, że mogę użyć JS do ręcznego ustawienia pozycji przewijania, ale nie sądziłem, że jest to konieczne, gdy strona nie jest ponownie renderowana.
nie jestem ekspertem z JS i DOM, więc może bardzo dobrze być czegoś brakuje, ale szukałem here i biegł przez ich przykładów z opcji Wypróbuj go tutaj i nie mogę odtworzyć problem, wskazanie kodu, z którym pracuję, jest sprawcą.
Jakieś pomysły, dlaczego pozycja przewijania jest resetowana? jQuery jest również dostępny dla mnie, jeśli zapewnia lepszą alternatywę.
Dziękujemy! Funkcje były wywoływane z stylów "przycisków". Zamieniłem je na znaczniki zakresu i to naprawiło problem. –
To nie jest (koniecznie) rozwiązanie, ale może być w twoim przypadku. Na przyszłość, gdy używasz znacznika zakotwiczenia, zazwyczaj potrzebujesz poprawnego href, ale może nie chcieć go nigdzie przechodzić, ponieważ uprzedzasz zachowanie javascript. Wtedy musisz użyć "return: false;" –
Tak. Tak to dla mnie zrobiło. Teraz czuję się głupio. – dooleyo