Newsgroup: it.comp.lang.javascript
Titolo: Imcompatibilità con Firefox!!

Ciao a tutti,
ho realizzato un piccolo script che date due select MULTIPLE permette
tramite due Button di passare dei valori da una select all'altra..
Ho incluso anche una piccola variante che utilizza xmlHTTP ma questo
non ci riguarda..
Il problema è che non riesco a far funzionare lo script con FIREFOX!!
Questo è il codice:
<script language=JavaScript>
<!--
function sposta(){
	partenza=document.forms['formArticolo'].categorie_disponibili;
	arrivo=document.forms['formArticolo'].categorie;
	sel=new Array();
	//per ogni opzione di partenza controlla:
	for(i=0;i<partenza.options.length;i++){
		//se è selezionata, mettila nell'array sel
		if(partenza.options[i].selected){
			partenza.options[i].selected=false;
			sel.push(partenza.options[i]);
		}
	}
	//Per ogni valore in sel
	for(i=0;i<sel.length;i++){
		objHTTP = getXMLHttp();
		objHTTP.open("GET", "catRoot.php?id="+sel[i].value, "false");
		objHTTP.onreadystatechange = function() {
		  if (objHTTP.readyState == 4) {
			  var opt = document.createElement('option');
			  opt.text = objHTTP.responseText;
			  opt.value = sel[i].value;
			  try {
				arrivo.add(opt, null);
			  }catch (ex) {
				arrivo.add(opt);
			  }finally {
				document.forms['formArticolo'].id_categoria.value += sel[i].value +
",";
			  }
		  }
		}
		objHTTP.send(null);
	}
}
function getXMLHttp() {
var xmlhttp = null;
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
 if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
   xmlhttp = new XMLHttpRequest();
 }
return xmlhttp
}
//-->
</script>
<body>
<form action="amministra.php" METHOD="POST" name="formArticolo">
<input type="hidden" name="id_categoria" value="" />
<select class="formText" name="categorie_disponibili" style="width:
300px; height: 150px" multiple>
  <optgroup label="Professional">
  <option value="1">ITALIANO</option>
  <option value="17 - Ufficio Cinema</option>
</select>
<input type="button" value=" &gt;&gt; " onClick="sposta()" />
<input type="button" value=" &lt;&lt; " onClick="togli()" />
<select name="categorie" class="formText" style="width: 300px; height:
150px" multiple>
</select>
</body>
Spero che qulcuno mi sappia aiutare!! Grazie 1000

 Il problema č che non riesco a far funzionare lo script con FIREFOX!!
Boh...cosě a grandi linee (letto di corsissima) non vedo problemi. Sarebbe
carino sapere cosa significa "non riesco a far funzionare"...per esempio la
riga dove firefox segnala l'errore?
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

Allora adesso ciò anche problemi con IE.. stò impazzendo con
javascript, per fare il debug devi avere un'esperienza della madonna!
Questo è l'url 
http://www.opent.it/romacinema/test.html
 
Aiutatemi!

 javascript, per fare il debug devi avere un'esperienza della madonna!
Che browser stai usando? Sviluppa con Gecko cosě hai la javascript console.
Quando con Gecko funziona tutto passa eventualmente a IE.
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

Uso IE e Firefox .. ma mentre con IE mi ridà la riga dell'erorre (
nell'HTML c'è un errore sull'onClick.. boh )
Mi sapresti dire qual'è il problema? Vai Cristiano!!! ;)

 nell'HTML c'è un errore sull'onClick.. boh )
Ho aperto con firefox (0.8), immediato errore che ti copioincollo:
 Error: illegal character
Source File:
http://www.opent.it/romacinema/test.html
Line: 16, Column: 38
Source Code:
for(i=0;i<partenza.options.len-gth;i++){ 
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

Grande ragà ho risolto aprendo la console javascript di firefox!
Grazie a tutti

function sposta(){
	partenza=document.forms['formArticolo'].categorie_disponibili;
	arrivo=document.forms['formArticolo'].categorie;
	sel=new Array();
	//per ogni opzione di partenza controlla:
	for(i=0;i<partenza.options.length;i++){
		//se è selezionata, mettila nell'array sel
		if(partenza.options[i].selected){
			partenza.options[i].selected=false;
			sel.push(partenza.options[i]);
		}
	}
	//Per ogni valore in sel
	for(i=0;i<sel.length;i++){
		objHTTP = getXMLHttp();
		objHTTP.open("GET", "catRoot.php?id="+sel[i].value, "false");
		objHTTP.onreadystatechange = function() {
		  if (objHTTP.readyState == 4) {
			  var opt = document.createElement('option');
			  opt.text = objHTTP.responseText;
			  opt.value = sel[i];
			  try {
				arrivo.add(opt, null);
			  }catch (ex) {
				arrivo.add(opt);
			  }finally {
				document.forms['formArticolo'].id_categoria += sel[i] + ",";
			  }
alert(document.forms['formArticolo'].id_categoria.value);
		  }
		}
		objHTTP.send(null);
	}
}
function getXMLHttp() {
var xmlhttp = null;
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
 if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
   xmlhttp = new XMLHttpRequest();
 }
return xmlhttp
}
<body>
<form action="amministra.php" METHOD="POST" name="formArticolo">
<input type="hidden" name="id_categoria" value="" />
<select class="formText" name="categorie_disponibili" style="width:
300px; height: 150px" multiple>
  <optgroup label="Professional">
  <option value="1">ITALIANO</option>
  <option value="17">- Ufficio Cinema</option>
</select>
<input type="button" value=" &gt;&gt; " onClick="sposta()" />
<input type="button" value=" &lt;&lt; " onClick="togli()" />
<select name="categorie" class="formText" style="width: 300px; height:
150px" multiple>
</select>
</body>
Niente da fare .. Vorre valorizzare il campo hidden id_categoria con
dei valori sapearati da virgola ma non ci riesco.

 Niente da fare 
Niente da fare ossia? Qual č adesso l'errore? sempre con IE o con firefox?
Hai provato a chiudere l'optgroup che vedo non hai chiuso?
Hai provato a rimuoverlo per vedere se sta lě il problema? (IE<6 non lo
gestisce, temo)


 			sel.push(partenza.options[i]);
Sei consapevole che push è stato introdotto in IE5.5 (e quindi non va con
IE <=5) ?
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.