Si tiene varios elementos de formulario con el mismo name
en un formulario, la entrada en la colección elements
en el formulario termina siendo una colección de esos campos (lo cual es útil). La especificación HTML DOM2 covers the elements
collection pero no parece indicar este comportamiento de inmediato cuando hay varios campos con el mismo nombre. ¿El comportamiento está cubierto por un estándar (en otro lugar en la especificación HTML DOM2, o en otra especificación)?Elementos de formulario con el mismo nombre reflejado en DOM
Para mayor claridad, no estoy preguntando cuál es la mejor forma de acceder a estos campos. Pregunto si el hecho de que terminan en una colección (de diversos tipos) en la colección elements
está cubierto por un estándar, y si es así, cuál.
Ejemplo (live copy):
HTML:
<form id="theForm">
<input type="text" name="foo" value="one">
<input type="text" name="foo" value="two">
</form>
JavaScript:
var form = document.getElementById("theForm"),
foo = form.elements.foo,
index;
console.log("typeof foo = " + typeof foo);
if (typeof foo !== "undefined") {
console.log("Object#toString says: " + Object.prototype.toString.call(foo));
}
if ('length' in foo && 'item' in foo) {
console.log("Looks like a collection of some kind:");
for (index = 0; index < foo.length; ++index) {
console.log(index + ": " + foo[index].value);
}
}
Ejemplo de salida (para Chrome):
typeof foo = object Object#toString says: [object NodeList] Looks like a collection of some kind: 0: one 1: two
He comprobado IE6 , 7, 8, una d 9, Firefox 4.0, Firefox 3.6, Chrome 12, Opera 11 y Safari 5. Todos hacen que la entrada en elements
sea una colección de algún tipo (Chrome, Firefox y Safari lo convierten en NodeList
[aunque extrañamente en Safari el typeof
es "función" no "objeto"], e IE y Opera lo convierten en HTMLCollection
, pero todos tienen length
, item
y []
acceso). Solo estoy tratando de encontrar el estándar, si hay alguno, que especifique el comportamiento.
¿Por qué no utilizar document.getElementsByName ("fieldNAME") que devuelve una matriz en todos los navegadores – mplungjan
@mplungjan: @ T.J. solo quiere saber si este comportamiento está definido en alguna parte. –
@mplungjan: Citando: * "No estoy preguntando cuál es la mejor manera de acceder a estos campos. Estoy preguntando si el hecho de que terminan en una colección (de diversos tipos) en la colección' elements' está cubierto por un estándar y, de ser así, cuál. "* Sé que puedo usar' getElementsByName' (aunque me dará ** todos ** los elementos con ese nombre, no solo los que están en el formulario). El objetivo de la pregunta es estándares. –