Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con combos anidados y compatibilidad con IExplore

Estas en el tema de Problema con combos anidados y compatibilidad con IExplore en el foro de Frameworks JS en Foros del Web. Hola, tengo el siguiente código que utiliza 4 combos anidados. En Firefox funciona correctamente, mientras que en IExplorer no, al cambiar de opción en el ...
  #1 (permalink)  
Antiguo 12/02/2008, 10:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Problema con combos anidados y compatibilidad con IExplore

Hola, tengo el siguiente código que utiliza 4 combos anidados. En Firefox funciona correctamente, mientras que en IExplorer no, al cambiar de opción en el CNO1 lo único que ocurre es que desaparece el desplegable de CNO3 y nada más.

Código:
<script LANGUAGE="JavaScript">
 
var xmlHttp
//var globalID = 1

function cno12(str)
{
if (str.length==0)
  {
  document.getElementById("texto_2").innerHTML=""
  return
  }
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  }
 
var str1 = str.substring(0, 1);
var str2 = str.substring(1, 2);   
 
var url="ajax2.php?cno1num="+str1+"&cno1letra="+str2
//url = url + str
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}


function cno23(str)
{
if (str.length==0)
  {
  document.getElementById("texto_3").innerHTML=""
  return
  }
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  }
 
var url="ajax3.php?cno2="+str
xmlHttp.onreadystatechange=stateChanged2
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function cno34(str)
{
if (str.length==0)
  {
  document.getElementById("texto_4").innerHTML=""
  return
  }
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  }
 
var url="ajax4.php?cno3="+str
xmlHttp.onreadystatechange=stateChanged3
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}





function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
   var v = xmlHttp.responseText.split(',') //separas lo de antes del = y lo dedespués y se inserta en v[o] y v[1]
   //var s = v[1].split(',') //Separas lo que hay antes y después de cada "," insertándolo en posiciones del vector s
  
   var sHTML = "<select class='SelectForm' name='cno2' onchange='cno23(this.value)'><option>Elige CNO2</option>"
   for (number in v) //recorremos todo el vector s con el iterador number
   {
       sHTML = sHTML + "<option>"
       sHTML = sHTML + v[number]
       sHTML = sHTML + "</option>"
   }
   sHTML = sHTML + "</select>"
//   sHTML = sHTML + (globalID+1)
//   sHTML = sHTML + "'>"
  
    document.getElementById("texto_1").innerHTML=sHTML
//    globalID = globalID + 1
 }
}


function stateChanged2()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
   var v = xmlHttp.responseText.split(',') //separas lo de antes del = y lo dedespués y se inserta en v[o] y v[1]
   //var s = v[1].split(',') //Separas lo que hay antes y después de cada "," insertándolo en posiciones del vector s
  
   var sHTML = "<select class='SelectForm' name='cno3' onchange='cno34(this.value)'><option>Elige CNO3</option>"
   for (number in v) //recorremos todo el vector s con el iterador number
   {
       sHTML = sHTML + "<option>"
       sHTML = sHTML + v[number]
       sHTML = sHTML + "</option>"
   }
   sHTML = sHTML + "</select>"
//   sHTML = sHTML + (globalID+1)
//   sHTML = sHTML + "'>"
  
    document.getElementById("texto_2").innerHTML=sHTML
//    globalID = globalID + 1
 }
}


function stateChanged3()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
   var v = xmlHttp.responseText.split(',') //separas lo de antes del = y lo dedespués y se inserta en v[o] y v[1]
   //var s = v[1].split(',') //Separas lo que hay antes y después de cada "," insertándolo en posiciones del vector s
  
   var sHTML = "<select class='SelectForm' name='cno3'><option>Elige CNO4</option>"
   for (number in v) //recorremos todo el vector s con el iterador number
   {
       sHTML = sHTML + "<option>"
       sHTML = sHTML + v[number]
       sHTML = sHTML + "</option>"
   }
   sHTML = sHTML + "</select>"
//   sHTML = sHTML + (globalID+1)
//   sHTML = sHTML + "'>"
  
    document.getElementById("texto_3").innerHTML=sHTML
//    globalID = globalID + 1
 }
}


function GetXmlHttpObject()
{
var xmlHttp=null;

try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}
Para cno12 utilizo stateChanged, para cno23 Statehanged2 y para cno34 Statehanged3. Lo único que hace es sustituir el select que hay por defecto por uno con las opciones correspondientes a la consulta que hago en segundo plano a la base de datos.

Código PHP:

                $result = mysql_query("SELECT * FROM `cno nivel 1 y letra`", $conexion);
                mysql_close($conexion);
                ?>
                    <td>CNO paso 1:<br /><select class="SelectForm" name="cno1" onchange="cno12(this.value)">
                    <option selected>Elige CNO1</option>
                       <?php while ($r=mysql_fetch_array($result)) {
                        
                        
$cno=$r['index 1'];
                        
$letra=$r['index 1 letra'];
                        
$cno1new=$cno.$letra;?>
                            <option><?php echo $cno1new;?></option>
                    <?php ?>
                    </select></td>
                    <td>CNO paso 2<br />
                    <span id=texto_1>
                    <select class="SelectForm"></select>
                    </span></td>
                    
                    <td>CNO paso 3<br />
                    <span id=texto_2>
                    <select class="SelectForm"></select>
                    </span></td>
                    
                    <td>CNO paso 4<br />
                    <span id=texto_3>
                    <select class="SelectForm"></select>
                    </span></td>
                    <td></td>
                </tr>

Imagino que debe ser alguna cosa de javascript y compatibilidad, aunque no lo se. Lo que si os aseguro es que en Firefox funciona de miedo, mientras que falla en IExplorer como os decía antes. Alguna idea de por qué puede ser? Gracias.
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 21:32.