Maldito sea el javascript

guagua
02 de Julio del 2005
Buenas a todo el mundo. Tengo un problemilla y la verdad es que no encuentro nada por ningun sitio. Tengo un sistema que genera HTML y necesito recoger los valores de las propiedades "tipo" y "requerido" del SELECT. En el maldito explorer se recogen sin problemas con un simple
document.getElementById(i).tipo, pero con el firefox no hay dios que las pille. Aqui les dejo un ejemplo:

<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="15px" valign="top">

</td>
<td width="495" class="respuesta">
<label class="pregunta">blablabla</label>
<select tipo="3" requerido="SI" id="5" name="pregunta5">
<option value="1">Si</option>
<option value="2">No</option>
</select>
</td>
</tr>
</table>

Alguna idea? Gracias por anticipado.

eth0
02 de Julio del 2005
JavaScript no. Maldito sea Internet Explorer, que te tiene mal acostumbrado. ;)

No me extraña que no te funcione en FireFox. Al fin y al cabo, ese navegador hace las cosas bien, y Explorer... pues no. Por eso tu código, que es erróneo, funciona bien en IE y no en FireFox.

Veamos... el lenguaje HTML está regido por una serie de reglas, que te dicen qué etiquetas y atributos puedes poner en cada sitio. Por ejemplo, el DTD de XHTML Estricto dice que puedes poner un elemento B dentro de un P, pero no fuera. Si no sigues las reglas del DTD, no esperes que funcionen las cosas.

Bien. Sabiendo esto, no puedes poner los atributos que a ti te parezca en los elementos de la página, porque en el DTD de HTML no existen esos atributos en el elemento SELECT. El hecho de que en IE funcione demuestra hasta qué punto ese navegador permite hacer las cosas mal.

En definitiva, deberías replantearte ese método, y buscar alguna otra forma de hacer lo que pretendes. Tal vez si nos dices qué quieres conseguir podamos ayudarte a buscar alguna alternativa.

guagua
02 de Julio del 2005
Hola. Si que me tiene mal acostumbrado el Explorer, si, pero otra cosa es que no pueda poner los atributos que quiera en el select y luego recogerlos.
La respuesta correcta era que en lugar de usar
document.getElementById(i).tipo
deberia haber usado
document.getElementById(i).getAttribute("tipo")
Asi puedo hacer que mi "erroneo" codigo funcione en explorer, firefox y opera. En el mundo real, si funciona, es correcto. Gracias de todas maneras por la explicacion de porque explorer es una mierda y mi codigo otra. ;p

Ahora tengo otra, a ver esta que tal: Una vez hecho esto, tengo problemas para poner el foco en una imagen. Supongo (espero) que en Opera y Firefox se podra hacer, al igual que se ha hecho toda la vida en el Explorer de satanas. El caso es que
document.getElementById(i).parentNode.parentNode.firstChild.focus();
solo funciona en Explorer. El elemento esta bien referenciado, es una imagen, pero al hacer el foco o no le da la gana (Opera) o se para (Firefox).
Alguna idea??? No se puede hacer un foco en una imagen??? No esta bien "apuntado"???

Gracias de nuevo.