Newsgroup: it.comp.lang.javascript
Titolo: Cambiare un contenuto quando cambio selezione in una combo

Ciao ragazzi ho un problema.....
Ho una combo e vorrei che al cambio di selezione mi si visualizzasse un
contennuto al posto di un altro, nel body della pagina.
Con IE funziona una cosa simile:
 
function diverso()
{
if (myform.select1.selectedIndex == 0)
					{
						document.all.item("MIOID").innerHTML = "<b>first piece of code</b>"
					}
					else if (myform.select1.selectedIndex == 1)
					{
						document.all.item("MIOID").innerHTML = "<b>second piece of code</b>"
					}
}
<form name='form1' method='post' action=''>
  <select name='select1' onChange='diverso();'>
  <option>1</option>
  <option>2</option>
  </select>
</form>
<div id="MIOID"><b>first piece of code</b></div>
<div id="MIOID2"><b>second piece of code</b></div>
Per quanto riguarda NN4 Mozilla e NN6 non funza
..e avevopensato per loro un codicillo simile:
<script>
function diverso()
{
if (myform.select1.selectedIndex == 0)
	{
		document.MIOID.document.open();
		document.MIOID.document.write("first piece of code");
		document.MIOID.document.close();
	}
else if (myform.select1.selectedIndex == 1)
	{
		document.MIOID2.document.open();
		document.MIOID2.document.write("second piece of code");
		document.MIOID2.document.close();
	}
</script>
<body>
<DIV ID="MIOID">id 1</DIV>
<DIV ID="MIOID2">id 2</DIV>
Ma l'errore restituitomio dallo script debugger di NN č:
"Error: document.MIOID has no properties"
Potreste aiutarmi perfavore?
Grazie :)
fabriZIo
--------------------------------
Inviato via 
http://usenet.libero.it

 <div id="MIOID"><b>first piece of code</b></div>
non ti verrà mai riconosciuto come layer da NS4 se non aggiungi nel tag
<div> style="position:absolute":
    <div id="MIOID" style="position:absolute"><b>first piece of
code</b></div>
Inoltre NS4 dà diversi problemi quando si usa "style". Ma qui le cose si
complicano un po'
Anche nella scrittura dei layer vi sono diversità. Puoi costruire una
funzione che scrive in un layer, del tipo:
    function writeLayer(id, s) {
        var el;
        if (document.layers) {        // NS4
            el = document.layers[id];
            el.document.write(s);
            el.document.close();
        } else {
            if (document.all)          // IE4, IE5
                el = eval(id);
            else                            // NS6, IE6, Mozilla...
                el = document.getElementById(id);
            el.innerHTML = s;
        }
    }
La funzione diverso() dovrà essere cambiata così:
    function diverso() {
        if (myform.select1.selectedIndex == 0) {
            writeLayer("MIOID", "<b>first piece of code</b>");
        }
        else if (myform.select1.selectedIndex == 1) {
            writeLayer("MIOID2", "<b>second piece of code</b>");
        }
    }
Oppure, meglio ancora, passi direttamente alla funzione diverso() l'indice
selezionato:
    <select name='select1' onChange='diverso(selectedIndex);'>
e la funzione diverso si semplifica:
    function diverso(index) {
        if (index == 0) {
            writeLayer("MIOID", "<b>first piece of code</b>");
        }
        else if (index == 1) {
            writeLayer("MIOID2", "<b>second piece of code</b>");
        }
    }
Maurizio.

 Potreste aiutarmi perfavore?
Oltre a quel che ti ha scritto Maurizio, per Netscape4 "document.MIOID" in 
effetti non esiste, devi fare "document.layers.MIOID.document..."
Per N6 poi devi usare la sintassi del DOM2:
document.getElementById("MIOID").innerHTML= ...
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----