Foros del Web » Programando para Internet » Javascript »

problema con "firstChild.nextSibling" en IE

Estas en el tema de problema con "firstChild.nextSibling" en IE en el foro de Javascript en Foros del Web. Hola. Como va? Les cuento mi priblema. El siguiente código me funciona perfecto en FF, pero no ocurre lo mismo en IE. Lo que hace ...
  #1 (permalink)  
Antiguo 22/05/2012, 09:32
af1
 
Fecha de Ingreso: junio-2010
Mensajes: 87
Antigüedad: 13 años, 10 meses
Puntos: 2
problema con "firstChild.nextSibling" en IE

Hola. Como va?

Les cuento mi priblema. El siguiente código me funciona perfecto en FF, pero no ocurre lo mismo en IE.

Lo que hace este código, que lo expongo simplificado, es preguntar si desea modificar el cuadro tarifario, y si el usuario acepta, el mismo javascript habilita todos los input text, removiendoles el atributo "readonly".

El problema que tengo, es que no puedo hacer funcionar en IE las funciones firstChild.nextSibling. O sea, que el problema es de posicionamiento de nodos en el DOM.


Código HTML:
Ver original
  1. function edicionTarifa(){
  2.     if(confirm("Atención: Este cuadro tarifario es referenciado por todas las facturas que utilizan la tarifa y rango de potencia indicado. ¿Desea realizar la edición?")){
  3.  
  4.         var lista=document.getElementById('ul');
  5.         var lis=lista.getElementsByTagName("li");
  6.        
  7.         for (var i in lis){
  8.             if(i!=0){              
  9.                 lis[i].firstChild.nextSibling.removeAttribute('readonly');
  10.             }
  11.         }
  12.     }
  13. }  
  14. </head>
  15. <body onload='edicionTarifa();'>
  16.  
  17. <ul id='ul'>
  18. <li>Periodo:<input type='text' id='t_periodo1111' name='t_periodo1111' value='1111'  readonly='readonly' /></li>
  19. <li>Cargo fijo:<input type='text' id='t_cargo_fijo1111' name='t_cargo_fijo1111' readonly='readonly'/></li>
  20. <li>Pp:<input type='text' id='t_pp1111' name='t_pp1111' readonly='readonly'/></li>
  21. <li>Pfp:<input type='text' id='t_pfp1111' name='t_pfp1111'  readonly='readonly'/></li>
  22. <li>Ep:<input type='text' id='t_ep1111' name='t_ep1111'  readonly='readonly'/></li>
  23. <li>Er:<input type='text' id='t_er1111' name='t_er1111' readonly='readonly'/></li>
  24. <li>Ev:<input type='text' id='t_ev1111' name='t_ev1111'  readonly='readonly'/></li>
  25. <li>eps:<input type='text' id='t_eps1111' name='t_eps1111' readonly='readonly'/></li>
  26. <li>ers:<input type='text' id='t_ers1111' name='t_ers1111' readonly='readonly'/></li>
  27. <li>evs:<input type='text' id='t_evs1111' name='t_evs1111'  readonly='readonly'/></li>
  28. <li>foninvemem:<input type='text' id='t_foninvemem1111' name='t_foninvemem1111'  readonly='readonly'/></li></ul><br/>
  29.  
  30. </body>
  31. </head>


Como se posicionarian en los inputs que se encuentran dentro de los "li"?? Vuelvo a aclarar que este código simplificado (y el original que es en PHP) funcionan con mozilla FF..

Espero haber expresado bien el problema.

Saludos y gracias.
  #2 (permalink)  
Antiguo 22/05/2012, 09:54
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: problema con "firstChild.nextSibling" en IE

Hola:

Tanto firstChild como nextSibling (y evidentemente las combinaciones) son correctos en todas las versiones de explorer que recuerdo... lo que podría fallar es lo de remover el atributo readonly... tal vez con la "O" mayúscula, pero mejor podrías ser: readOnly = false...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 22/05/2012, 10:11
af1
 
Fecha de Ingreso: junio-2010
Mensajes: 87
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: problema con "firstChild.nextSibling" en IE

Gracias por la respuesta. Pero no me funcionó lo de ponerle la "O" mayuscula.

Subo una imagen con el error que me "canta" el IE, después de abrir la página.



Q decis??
  #4 (permalink)  
Antiguo 23/05/2012, 05:13
af1
 
Fecha de Ingreso: junio-2010
Mensajes: 87
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: problema con "firstChild.nextSibling" en IE

No se ve bien la imagen. Lo que dice es "firstChild.nextSibling es nulo o no es un objeto"...

Y sigo sin poder posicionarme en los input con el IE...
  #5 (permalink)  
Antiguo 28/09/2012, 08:03
af1
 
Fecha de Ingreso: junio-2010
Mensajes: 87
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: problema con "firstChild.nextSibling" en IE

Retomamos este tema en el trabajo, para poderle dar solución para todos los navegadores.. Alguna idea de como hacerlo funcionar en el IE?? Alguien tuvo algún problema similar??

Gracias!
  #6 (permalink)  
Antiguo 28/09/2012, 09:15
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: problema con "firstChild.nextSibling" en IE

prueba a hacer esta modificación en tu script:

Código Javascript:
Ver original
  1. for (var i in lis){
  2.   if(i!=0){              
  3.     lis[i].firstChild.nextSibling.removeAttribute('readonly');
  4.   }
  5. }

por

Código Javascript:
Ver original
  1. for (var i in lis){
  2.   o = lis[i].firstChild;
  3.   if(o) o.nextSibling.readOnly=false;
  4. }


* primer punto: cuando lees el conjunto array de <li> en mozilla, te arroja error también pero al final, la variable i te envía un valor length del array (no el elemento), no lo detectas por salir al final del recorrido y termina de habilitar todos los input. Al leer en explorer, lee el largo del array como primera variable, no al final como en el otro navegador, por ello te arroja el error al acto y te coarta el script.

* segundo punto: removeAttribute('readonly') es limitado a ciertos navegadores, usa readOnly=false que es estándar.

mi humilde opinión
salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #7 (permalink)  
Antiguo 28/09/2012, 09:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: problema con "firstChild.nextSibling" en IE

Esta sería la forma correcta

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>zzzzzz</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function edicionTarifa(){
  9. var i;
  10. if(confirm("Atención: Este cuadro tarifario es referenciado por todas las facturas que utilizan la tarifa y rango de potencia indicado. ¿Desea realizar la edición?")){
  11. var lista=document.getElementById('ul');
  12. var lis=lista.getElementsByTagName("li");
  13. for (i=0; i<lis.length; i++) {
  14. if(i!=0){  
  15. lis[i].firstChild.nextSibling.readOnly = false;
  16. }
  17. }
  18.  
  19. }
  20. }  
  21. //]]>
  22.  
  23. </head>
  24. <body onload='edicionTarifa();'>
  25. <ul id='ul'>
  26. <li>Periodo:<input type='text' id='t_periodo1111' name='t_periodo1111' value='1111' readonly='readonly' /></li>
  27. <li>Cargo fijo:<input type='text' id='t_cargo_fijo1111' name='t_cargo_fijo1111' readonly='readonly' /></li>
  28. <li>Pp:<input type='text' id='t_pp1111' name='t_pp1111' readonly='readonly' /></li>
  29. <li>Pfp:<input type='text' id='t_pfp1111' name='t_pfp1111' readonly='readonly' /></li>
  30. <li>Ep:<input type='text' id='t_ep1111' name='t_ep1111' readonly='readonly' /></li>
  31. <li>Er:<input type='text' id='t_er1111' name='t_er1111' readonly='readonly' /></li>
  32. <li>Ev:<input type='text' id='t_ev1111' name='t_ev1111' readonly='readonly' /></li>
  33. <li>eps:<input type='text' id='t_eps1111' name='t_eps1111' readonly='readonly' /></li>
  34. <li>ers:<input type='text' id='t_ers1111' name='t_ers1111' readonly='readonly' /></li>
  35. <li>evs:<input type='text' id='t_evs1111' name='t_evs1111' readonly='readonly' /></li>
  36. <li>foninvemem:<input type='text' id='t_foninvemem1111' name='t_foninvemem1111' readonly='readonly' /></li>
  37. </ul>
  38. <br />
  39. </body>
  40. </html>

Demo
http://foros.emprear.com/javascript/next-sibling.html

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 05/10/2012, 09:51
af1
 
Fecha de Ingreso: junio-2010
Mensajes: 87
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: problema con "firstChild.nextSibling" en IE

Perr0 y emprear, muchas gracias.. Ahora pruebo con esos códigos y comento.

Etiquetas: funcion, html, input, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:05.