Originalmente estaba pidiendo una forma elegante de simular la funcionalidad Array.concat()
en los resultados de la función getElementsByTagName
en IE o navegadores más antiguos, porque parecía que concat
no era compatible. Solo que, por supuesto, lo es - la razón por la cual el objeto devuelto no lo soportó es porque no es un Array
. Oops!Javascript - Concatenar múltiples NodeLists juntos
getElementsByTagName
en realidad devuelve un NodeList
. La verdadera pregunta, entonces, es: ¿cuál es una buena manera de obtener una lista única de todos los elementos del formulario en un documento (entrada, seleccionar, área de texto, botón) para recorrerlos? No se requiere una matriz ... un solo NodeList
sería perfecto, también.
Tenga en cuenta que estoy usando IE6 ya que esto es para una intranet corporativa (aunque pronto IE8).
La respuesta que se me ocurrió fue:
Se hizo más simple y probablemente se comportó mejor que sólo hay que poner el código en una función separada y llamarla tres veces con las diferentes NodeLists, en lugar de preocuparse por una buena manera de agruparlos en uno.
Al final me cambié al uso de MooTools (después de varias horas leyendo las comparaciones de todos los diferentes marcos). Entonces, obtener una matriz de los elementos que quiero es muy simple. Recomiendo usar un marco de JavaScript como este en lugar de que la gente se desanime tratando de descubrir la mejor manera de hacer las cosas. Por supuesto que estoy totalmente interesado en aprender el lenguaje en bruto (razón por la cual he evitado usar un framework por tanto tiempo) pero no siempre es la manera más rápida de hacer que las cosas funcionen, lo que en un negocio a menudo importa tanto. como mejorar la habilidad del codificador con el lenguaje.
Actualización: ¡casi 2 años más tarde solo usaría jQuery y terminaré con eso!
IE lo admite, ¿puede aclarar un poco la pregunta? –
Usar jQuery es definitivamente el camino a seguir. Me encontré con esto en un caso donde no tenía acceso a jQuery, sin embargo. Terminé creando una matriz de etiquetas de elementos en las que quería actuar y recorriendo todo, llamando a getElementsByTagName para cada una. Me pregunto si eso es más o menos eficiente que la respuesta principal. – bpscott
@bpscott ¿Pero pusiste todos los elementos en una sola matriz en cualquier punto, o simplemente trabajas con ellos una sola etiqueta a la vez? – ErikE