Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] onChange en select problema con IE

Estas en el tema de onChange en select problema con IE en el foro de Javascript en Foros del Web. He hecho un formulario que va perfecto en FireFox pero lo he probado en el explorer y no me funcioana. 1.Tengo unos slect dinámicos que ...
  #1 (permalink)  
Antiguo 22/11/2011, 16:00
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años, 1 mes
Puntos: 67
onChange en select problema con IE

He hecho un formulario que va perfecto en FireFox pero lo he probado en el explorer y no me funcioana.
1.Tengo unos slect dinámicos que en explorer no me hacen nada. He mirado todo lo que hay en la web, castellano e ingles y no me ha servido ninguna de las supuestas soluciones.
2. Tengo un boton para calcular el precio que funciona con innerHTML y tampoco me funciona, de hecho los select tmabien utilizan innerHTML.

Os dejo el código:
1.Primer select, las opciones son cargadas desde una base de datos:
Código PHP:
       <select name='catalogos1' id='catalogos1' onChange='cargaContenido(this.id)'><option value='0'>Elija un catálogo</option><option value='1'>Catálogo 1</option><option value='2'>Catálogo 2</option><option value='3'>Catálogo 3</option><option value='4'>Catálogo 4</option><option value='5'>Catálogo 5</option><option value='6'>Catálogo 6</option><option value='7'>Catálogo 7</option><option value='8'>Catálogo 8</option><option value='9'>Catálogo 9</option></select
El boton de calcular el precio llama a una función: calcular()
2.función calcular
Código PHP:
function calcular()
{
   var 
Destinodocument.getElementById("precio"); //el id del lugar donde pondré el enlace
   
var listaAIds= new Array();//Array donde almacenare los ids de las piezas
   
for (var i=0;i<posicionCampo;i++)//Bucle para guardar los ids en el array
   
{  
      var 
selectOp=document.getElementById("piezas"+(i+1));//Cojo el select objetivo, +1 porque empiezo en 0
      
if(selectOp != null//Compruebo que exista   
      
{
        var 
opcionX=selectOp.options[selectOp.selectedIndex].value;//Cojo el valor del select
        
listaAIds[i]=opcionX;//meto en el array el id
      
}
    }
    var 
listaSIds listaAIds.toString();//Paso la lista array ids a una lista string de ids
      
ajax=nuevoAjax();
      
ajax.open("GET","precio.php?numero="+posicionCampo+"&lista="+listaSIdstrue);//paso el numero de filas y el array de piezas
      
ajax.onreadystatechange=function() {
          if (
ajax.readyState==4) {
            
Destino.innerHTML ajax.responseText;
          }
      }
      
ajax.send(null);    

Esta última es un poco complicada, hay un for para meter todos los precios en un array y luego paso el array a string para pasarlo por GET a un PHP pero el IE me dice: error desconocido en tiempo de ejecución. Línea X.
Siendo X el número de la línea que coincide con: Destino.innerHTML = ajax.responseText;

En FF corre perfecto recuerden y muchas gracias.

PD. Odio Internet Explorer
  #2 (permalink)  
Antiguo 23/11/2011, 08:58
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: onChange en select problema con IE

revisa que te trae con un alert antes de Destino.innerHTML = ajax.responseText;
recuerda que un elemento en línea no puede contener a un elemento en bloque
Cita:
<a><div></div></a>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 25/11/2011, 05:19
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años, 1 mes
Puntos: 67
Respuesta: onChange en select problema con IE

Lo de innerHTML lo esto solucionado muy lentamente. En IE inner es para solo lectura así que no me va a funcionar. Estoy sustituyendo pasito a pasito por crear elementos div y ponerlos donde quería.

Pero el problema del onchange persiste, lo curioso esq si en vez de la llama a dal función pongo un alert funciona! Y no es un problema de tener mal la ruta ni nada porq en FF funciona bien.

Gracias
  #4 (permalink)  
Antiguo 26/11/2011, 15:09
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años, 1 mes
Puntos: 67
Respuesta: onChange en select problema con IE

Vale, he encontrado una de las claves del problema, un puñetero bucle en funciona en FF y en IE no!!
Bueno, os pongo el bucle:
Código PHP:
  var i=1;
    var 
nombreCompletodocument.getElementById(idSelectOrigen).getAttribute("name");
  var 
nombreFin="";
  while ((
nombreCompleto[i]>='A') && (nombreCompleto[i]<='z'))//Bucle para llegar al numero de los id's
  
{
    
i++;
  }
  for (var 
a=i;a<nombreCompleto.length;a++){nombreFin=nombreFin+nombreCompleto[a];}//Bucle para almacenar el numero de los id's 
El while recorre el atributo nombre de una etiqueta hasta que termina con las letras y el for almacena los numeros del string. Los nombres son del tipo: elemento1, elemento2 y como no puedo saber si hay 1 o 10 elementos lo hago asi.
Gracias!

EDITO:
Me respondo a mi mismo, el maldito IE no identifica string[posicion], con .charAt funciona.

Última edición por zalito12; 26/11/2011 a las 15:37 Razón: Solucionado

Etiquetas: explorer, ie8, innerhtml, onchange
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 06:22.