Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Dom e modificare elementi

    Ciao a tutti... ho una domandina facile facile per voi guru del Dom e del JS
    E' possibile cambiare un input type="text" in una Select senza perdere le varie caratteristiche (eventi, classe, id, name)? Naturalmente tutto da JS...!
    Grazie
    Rino

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Si col DOM puoi modificare un campo ma non sono sicuro che tu non debba riasegnare tutto nuovamente, vedi qui poi accedi sez. DOM.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Questo è il mio dubbio... perchè mi basta un innerHTML e creo la select, ma volevo sapere se c'era un metodo per cambiare il tipo di nodo e non perdere il resto... altrimenti devo leggermi tutti gli attributi e riassegnarli!!!

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma il DOM è qualcosa di complesso e completo del semplice innerHTML.
    Non sono un esperto ma credo che se per esempio aggiungi una option ad una select tramite DOM tu non debba reinserire anche la class associata alla select, mentre se la crei da zero si.
    Nel link postato trovi una guida utilissima.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Guarderò meglio, anche se quella guida l'ho già spulciata molte volte...
    Cmq se qualcuno sapesse indicarmi qualcosina in più....

  6. #6
    ...allora... come cambiare tipo di campo non l'ho trovato, ma ho trovato come beccare al volo tutte le proprietà di un campo:
    codice:
    for (prop in document.getElementById["mioLiv"])
    dove prop è un prop è la proprietà, quindi mi basta riassegnare la proprieta al nuovo campo con un ciclo e dovrebbe andare a posto.
    Mi sono però ritrovato con un problema... non tutte le proprietà del type="text" ci sono nella select, quindi devo controllare questo. Qualcuno mi sa dire come posso fare questo controllo? quello che in PHP sarebbe isset()?
    Grazie

  7. #7
    uppo

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    codice:
    <script type="text/javascript">
    window.onload=function(){
    	str='non presenti in select:\n';
    	var t=document.getElementById('txt');
    	var s=document.getElementById('sel');
    	for(prop in t){
    		if(!s[prop]){ 
    			str+=prop+'\n';
    		}
    	}
    	alert(str);
    }
    </script>
    
    <form>
    <input type="text" id="txt">
    <select id="sel">
    <option>a</option>
    </select>
    </form>

  9. #9
    Qualcosa non mi quadra... ti scrivo il mio codice perchè immaginavo fosse una cosa come quella che mi hai scritto, ma a me da un errore.
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <
    html>
    <
    head>
    <
    title>Untitled</title>
    <
    script language="JavaScript" type="text/javascript">
    function 
    cambia(div){ 
     var 
    proprieta = new Array(); var valori = new Array();
     var 
    i=0;
     var 
    str="PROPRIETA' INIZIALI
    "
    ;
     for (
    prop in document.getElementById(div)) {
      
    proprieta[i]=prop;
      
    valori[i]=document.getElementById(div)[proprieta[i]];
      
    str=str proprieta[i] + ": " valori[i] + "
    "
    ;
      
    i++;
     }
     
    str=str "----------------------------------------------------------------------


    "
    ;
     
    str=str "PROPRIETA' NUOVO CAMPO
    "
    ;
     var 
    mydiv=document.getElementById(div).parentNode;
     
    str2="<select name='" div "' id='" div "'><option value='prova'>prova</option></select>";
     
    mydiv.innerHTML=str2;
     
    i=0;
     
     for(
    i=0;i<proprieta.length;i++){
      if(
    document.getElementById(div)[proprieta[i]]){
       
    document.getElementById(div)[proprieta[i]]=valori[i];
      }
      
    str=str+proprieta[i]+": "+valori[i]+"
    "
    ;
     }
     
    document.getElementById("debug").innerHTML=str
    }


    function 
    start(){
     
    a=document.getElementById("dati_0");
     
    a["onfocus"]=prova;
    }
    function 
    prova(){
     
    alert("cliccato");
    }
    window.onload=start;
    </script>
    </head>

    <body>
    <form name="mod">
     <div id="prova">
      <input type="Text" name="dati_0" id="dati_0" />

      <button onclick="cambia('dati_0')" id="bott">clicca</button>
     </div>
    </form>
    <div id="debug"></div>
    </body>
    </html> 
    Mi da l'errore alla riga 25
    codice:
    document.getElementById(div)[proprieta[i]]=valori[i];
    Eppure l'if sopra dovrebbe dire di entrare solo se la proprietà esiste no?

  10. #10
    Da questo errore firefox:
    codice:
    Errore: setting a property that has only a getter
    File sorgente: http://localhost:81/lavoro_intranet/...bio_input.html
    Riga: 25

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.