Visualizzazione dei risultati da 1 a 9 su 9

Discussione: appendChild e firefox

  1. #1

    appendChild e firefox

    Buona giornata,

    questa funzioncia javascript mi funziona solo su ie e non su firefox.

    codice:
    function appendiprov (prov,modulo) {
        var camposelect = document.forms[modulo].Provincia;
        var optionElement = document.createElement('option');
        optionElement.setAttribute("value","file/"+prov+".txt");
    	optionElement.setAttribute("selected","selected");
        optionElement.appendChild(document.createTextNode(prov));
        camposelect.appendChild(optionElement);
    }
    firefox mi da errore sull'ultima riga dicendo:
    'camposelect has no properties'

    Grazie
    Luca

  2. #2
    Servirebbe anche la parte di codice html contenente il form per cercare di capire quale possa essere l'errore...

  3. #3
    la situazone iniziale è questa:
    codice:
    <select name="Provincia" class="list" onchange="caricaProvince(value, 'comuni')">
    <option value="">Seleziona provincia</option>
    <option value="file/Bari.txt">Bari</option>
    <option value="file/Brindisi.txt">Brindisi</option>
    <option value="file/Foggia.txt">Foggia</option>
    <option value="file/Lecce.txt">Lecce</option>
    <option value="file/Taranto.txt">Taranto</option>
    </select>
    a me basterebbe semplicemente che fosse selezionata una provincia.
    lasciando un attimo da parte l'append child ho provato a fare

    codice:
    var camposelect = document.forms[modulo].Provincia;
    camposelect.value="file/"+prov+".txt";//dove prov è un parametro
    ma non funziona. mi dice comunque:
    'camposelect has no properties'

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se modulo e' il name del form va tra apici
    document.forms['modulo'].Provincia;
    o piu' semplicemente
    document.modulo.Provincia;

  5. #5
    no xinod, 'modulo' è un argomento della funzione.

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    gia', non avevo visto

    i nomi sono esclusivi nel documento?
    cioe' c'e' un solo elemento con name="comuni", un solo elemento con name="Provincia"?

    questo
    camposelect.value="file/"+prov+".txt";//dove prov è un parametro
    non funziona perche', da che mi risulti, per una select puoi settare un selectedIndex, l' indice dell' option da selezionare, non un value arbitrario

    la logica del primo codice postato e' corretta, quindi l' errore e' altrove

  7. #7
    Sì i nomi sono esclusivi, fatta eccezzione per una variabile ASP denominata appunto 'province'.

    ti posto lo script completo:

    inizialmente nella pagina c'è questo

    codice:
    <span id="province">
        <select name="Provincia">
            <option>----------</option>
        </select>
    </span>
    
    <script type="text/javascript" language="javascript">
        caricaProvince('file/<%=regione%>.txt','province','<%=provincia%>','ModImm');
    </script>
    la funzione caricaProvince è la seguente

    codice:
    function caricaProvince(nomeFile,nomebox,x,modulo) {
    if (nomeFile=="") {
    return
    }
      // variabili di funzione
      var
        // assegnazione oggetto XMLHttpRequest
        ajax = assegnaXMLHttpRequest(),
        // assegnazione elemento del documento
        elemento = prendiElementoDaId(nomebox),
        // risultato booleano di funzione
        usaLink = true;
      
      // se l'oggetto XMLHttpRequest non è nullo
      if(ajax) {
        // il link al file non deve essere usato
        usaLink = false;
    
        // impostazione richiesta asincrona in GET
        // del file specificato
        ajax.open("get", nomeFile, true);
    
        // rimozione dell'header "connection" come "keep alive"
        ajax.setRequestHeader("connection", "close");
    
        // impostazione controllo e stato della richiesta
        ajax.onreadystatechange = function() {
          
          // verifica dello stato
          if(ajax.readyState === readyState.COMPLETATO) {
            // verifica della risposta da parte del server
            if(statusText[ajax.status] === "OK")
              // operazione avvenuta con successo
              elemento.innerHTML = ajax.responseText;
            else {
              // errore di caricamento
              elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.
    ";
              elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
            }
    		  if (x){
    			  if (nomebox=='province') {
    				  appendiprov(x,modulo);
    			  }
    			  if (nomebox=='comuni'){
    			      appendicomune(x,modulo);
    			  }
    			  if (nomeFile=='dipendenteMutui.txt'||nomeFile=='autonomoMutui.txt'||nomeFile=='dipendente.txt'||nomeFile=='autonomo.txt'&&nomebox=='boxtipi') {
    				  assegnaValori(x);
    				  mostranascosto();
    			  }
    		  }
          } 
        }
    
        // invio richiesta
        ajax.send(null);
      }
       
      return usaLink;
    }
    come vedi dopo avere eseguito l'innerHTML lancia la funzione appendiprov che è quella che ho postato all'inizio.

    Tutto funziona alla perfezione con ie, con firefox mi da l'errore che ho già postato.
    :master:

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ti consiglio di lasciare un link a cui qualcuno possa dare un' occhiata
    ciao

  9. #9
    ho risolto,

    grazie xinod

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.