Problema com o getElementsByName

2 respostas
Y

Galera, estou tendo um problema com um código bem simples.

Na página tenho o seguinte:

<label name="pendingEquipments" id="pendingEquipment1">Equipment 1</label>
<label name="pendingEquipments" id="pendingEquipment2">Equipment 2</label>
<label name="pendingEquipments" id="pendingEquipment3">Equipment 3</label>
<label name="pendingEquipments" id="pendingEquipment4">Equipment 4</label>
<label name="pendingEquipments" id="pendingEquipment5">Equipment 5</label>

No Firefox, uso isso:

var pendingEquipments = document.getElementsByName("pendingEquipments");
alert(pendingEquipments.length);

E mostra “5” certinho.

Se eu usar o mesmo código no Internet Explorer, o IE diz que o length é 0. E seu tento recuperar a tagName (que deveria ser “LABEL”) ele diz que é undefined.

O IE não suporta o document.getElementsByName?

Alguém tem alguma idéia?

OBS.: FF 2.0.0.12, IE 7

2 Respostas

dudaskank

Andei pesquisando e parece que o ie só procura o atributo NAME onde está especificado no HTML 4.01, nas tags BUTTON, TEXTAREA, APPLET, SELECT, FORM, FRAME, IFRAME, IMG, A, INPUT, OBJECT, MAP, PARAM e META.

Achei também uma função para contornar este problema, que procura o mesmo nome em tags iguais:

function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

referências:
[url]http://jszen.blogspot.com/2004/07/whats-in-name.html[/url]
[url]http://www.dreamincode.net/code/snippet293.htm[/url]

Y

Hmmm… entendi. Blz, então.

Valew, cara.

Criado 27 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 2
Participantes 2