Código:
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. <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; }
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.