Obecnie piszę akordeon i napotykam na ten sam problem, co opisany w nextSibling difference between IE and FF? - w szczególności różnice między Microsoft nextSibling/nextElementSibling a tym, które zostały zaimplementowane przez wszystkich innych.Przenoszenie nextElementSibling/nextSibling
Z różnych powodów używanie jquery nie jest opcją. Nie robi się wszystkie moje użytkowników MS uaktualnienia do MSIE9
Obecnie używam następujący kod do obejścia problemu:
// tr is a TR doc element at entry....
while (nthRow--) {
// for Chrome, FF tr=tr.nextElementSibling; for MSIE...tr=tr.nextSibling;
tr=tr.nextElementSibling ? tr.nextElementSibling : tr=tr.nextSibling;
if (!tr || tr.nodeName != "TR") {
break;
}
tr.style.display="";
}
który wydaje się robić to, co się spodziewać w MSIE6, FF i Chrome - tzn. elementy nthRow TR poniżej początkowego TR są widoczne (poprzednio style.display = "none").
Ale czy może to mieć nieoczekiwane skutki uboczne?
(jestem trochę newbie z javascript;)
Tak - to wydaje się lepsze rozwiązanie - praktycznie to samo jako odpowiedź epascarello, ale ten jest nieco bardziej niezawodny – symcbean
... tylko nie powinien być podczas (el && el.nodeType! == 1); ? – symcbean
@symcbean: Tak, rzeczywiście. Naprawiony. Dobry połów. : o) – user113716