Ya tengo la respuesta de select>>radio, pero tiene unos pequeños apaños para que el señor Internet Explorer nos haga un poquito de caso. Uno es al checkear los radios, y otro es para, simplemente, colocarlos.
Código PHP:
<p id="parrafo">
<select id="elSelect">
<option value="1">Casa</option>
<option value="1">Coche</option>
<option value="1">Cartera</option>
<option value="1">Llave</option>
<option value="1">Bombilla</option>
<option value="1">Interruptor</option>
</select>
<input type="button" value="cambia" onclick="cambiar()" />
</p>
<script>
var elParrafo=document.getElementById("parrafo");
var esSelect=true;
function cambiar() {
if(esSelect) {
var elSelect=document.getElementById("elSelect");
var opciones=elSelect.options;
var padre=document.createElement("P");
padre.id="padre";
for(var a=0; a<opciones.length; a++) { //un radio por cada opcion
try{
var radio=document.createElement('<input type="radio" name="deSelect" value="'+opciones[a].value+'" />');
} catch(err) {
var radio=document.createElement("INPUT");
radio.type="radio";
radio.name="deSelect";
radio.value=opciones[a].value;
}
if(elSelect.options.selectedIndex==a)
var iSeleccionado=a;
padre.appendChild(radio);
padre.appendChild( document.createTextNode(opciones[a].text) );
padre.appendChild( document.createElement("BR") );
}
elParrafo.replaceChild(padre, elSelect);
padre.childNodes[iSeleccionado*3].checked=true; //marcar el seleccionado (despues de replaceChild, si no en IE no funciona)
}
else {
var padre=document.getElementById("padre");
var hijos=padre.childNodes;
var elSelect=document.createElement("SELECT");
elSelect.id="elSelect";
for(var a=0; a<hijos.length; a++) { //recorremos los hijos
if( hijos[a].tagName=="INPUT" && hijos[a].type=="radio" ) { //que solo sean radios
elSelect.options[ elSelect.options.length ]=new Option( hijos[a].nextSibling.data, hijos[a].value );
if( hijos[a].checked ) //marcar el seleccionado
elSelect.options[ elSelect.options.length-1 ].selected=true;
}
}
elParrafo.replaceChild(elSelect, padre);
}
esSelect=!esSelect;
}
</script>
Ya veis que hay que hacer la chapuza de marcar el radio después de adjuntarlo al documento para que el dichoso explorer lo consiga digerir (
http://www.subflash.com/foro/viewtopic.php?t=7853).
Otra chapuza que hay que hacer para que el IE trague es ese try & catch que seguro que os ha chocado. Bueno, resulta que si añadimos radios al documento con IE usando el método tradicional se añaden, es cierto, pero son totalmente impracticables. Me explico: No están disabled, pero no se pueden checkear.
Así que encontré la solución por google también y todos contentos (
http://cf-bill.blogspot.com/2006/03/...y-created.html)
Bueno, me ha funcionado tanto en IE como en FF.
Respecto al select>>checkboxes supongo que será parecido, a ver si alguien se atreve, que a mi los select múltiples me intimidan más.
Un saludo y espero aportar más cosas.