Actualmente estoy escribiendo un acordeón y me encuentro con el mismo problema descrito en nextSibling difference between IE and FF?, específicamente las diferencias entre nextSibling/nextElementSibling de Microsoft y las implementadas por todos los demás.Portabilidad de nextElementSibling/nextSibling
Por diversas razones, usar jquery no es una opción. Tampoco es conseguir todos mis usuarios de MS para actualizar a MSIE9
Actualmente estoy usando el código siguiente para solucionar el problema:
// 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="";
}
que parece hacer lo que espero en IE6, FF y Chrome - es decir, los elementos nthRow TR debajo del TR inicial se hacen visibles (previamente style.display = "none").
¿Pero es probable que esto tenga efectos secundarios inesperados?
(soy un poco de un novato con Javascript;)
Sí - que parece una mejor solución - efectivamente el mismo que la respuesta de epascarello pero éste es un poco más robusto – symcbean
... solo no debería ser while (el && el.nodeType! == 1); ? – symcbean
@symcbean: Sí de hecho. Fijo. Buena atrapada. : o) – user113716