segunda-feira, março 21, 2005

Por que a porra do getElementsByName não funciona no IE !?!?!?!?

Duvidou???

Toma o tira-teima:

<html>
<body>
<div name="duv">ttttttt</div>
<div name="duv">ewaffew</div>
<div name="duv">1111111</div>
<input type="radio" name="as" value="1">1
<input type="radio" name="as" value="2">2
</body>
</html>
<script>
var _Name = "duv";
var Elements = document.getElementsByName(_Name);
alert(_Name + ' ' + Elements.length);

var _Name = "as";
var Elements = document.getElementsByName(_Name);
alert(_Name + ' ' + Elements.length);
</script>

4 Comments:

At 4:47 PM, Blogger Fábio said...

Olha, meu velho...

Deve ser pq o atributo name não é válido em um elemento div...

Antes que vc me xingue por defender o IE: eu realmente acho o IE uma bos**, praticamente só uso Mozilla. Sou completamente contra o IE, e tenho duas camisetas do Firefox :). Mas tbém não podemos culpar o pobre browser banguela da M$ por não entender nossas maluquices fora dos padrões.

Tentei pensar numa sugestão de outra forma de resolver isso em poucas linhas de código, mas no IE não tem como mesmo. É uma pena. Se o problema fosse o Firefox, vc teria ainda XPath, se precisasse.

Ahn. Uma sugestão é usar:

<duv><div>dhrkhfkr</div></duv>

E depois usar:

document.getElementsByTagName('duv');

Feio... Mas funciona em qquer browser.

Boa sorte!

 
At 5:53 PM, Blogger andrecassal said...

Bom, depois q o projeto de CSS3Selectors estiver pronto poderemos facilmente implementar algo do genero

document.getElementsByCSSRule("div[name='duv']")

hehehe.

 
At 11:51 AM, Blogger Fábio said...

A propósito...

Esse <script> aí no meio do teu post tá dando pau no meu RSS Reader :(

Dá pra trocar por &lt;script&gt; ?

 
At 12:45 PM, Blogger Roberto Colnaghi Junior said...

"Deve ser pq o atributo name não é válido em um elemento div..."

Não parece ser o que a W3C diz a respeito...

De que adianta a W3C se o maior fornecedor de browsers não respeita as regras definidas?

O que eu mais falo ultimamente é "Mas funciona tão bem em Firefox..."

 

Postar um comentário

<< Home