Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542

    Come si accede all'attributo ID dei campi input di una riga di un tbody?

    Ciao a tutti,
    ho trovato in rete questo interessante scipt (funzionante) che mi permette di aggiunere e rimuovere righe da un tbody con id="MyContent"

    Prima di cancellare una riga però vorrei leggere gli id dei campi input della riga da cancellare (per memorizzarli in un array)

    potete aiutarmi a capire qual'è il comando che mi permette di leggere gli id?

    Questo è lo scipt:

    codice:
    <script>
    var myVar = { id: 0}
    var voce = new Array();
    var valore = new Array();
    var id = new Array();
    
    //Crea una riga le celle e gli input all'interno, e poi l'aggiunge al tbody
    var addRowToTbody = function(){
       
    
       //Ottengo l'elemento tbody
       var tbody = document.getElementById("MyContent");
       //Creo un elemento tr
       var tr = document.createElement("tr");
       //l'aggiungo al tbody
       tbody.appendChild(tr);
      
       //Continuo con gli altri elementi
       var td = document.createElement('td');
       tr.appendChild(td);
       var inpt = document.createElement('input');
       td.appendChild(inpt);
       //Setto i dati dell'input
       inpt.type = "text";
       inpt.name = "voce[]";
       inpt.id = "id"+myVar.id;
       myVar.id = myVar.id+1;
    
       //Gli altri campi	
       td = document.createElement('td');
       tr.appendChild(td);
       inpt = document.createElement('input');
       td.appendChild(inpt);
       inpt.type = "text";
       inpt.name = "valore[]";
       inpt.id = "id"+myVar.id;
       myVar.id = myVar.id+1;
    
       td = document.createElement('td');
       tr.appendChild(td);
       inpt = document.createElement('input');
       td.appendChild(inpt);
       inpt.type = "hidden";
       inpt.name = "id[]";
       inpt.id = "id"+myVar.id;
       myVar.id = myVar.id+1;
    
       td = document.createElement('td');
       tr.appendChild(td);
       var a = document.createElement('a');
       td.appendChild(a);
       a.href = '#';
       a.onclick = deleteRowFromTbody;
       a.appendChild(document.createTextNode('Elimina'));
    }
    
    
    //Cancella la riga corrispondente al link Cancella cliccato
    var deleteRowFromTbody = function(){
    
       if(confirm("Procedo con la cancellazione di questa voce?"))
       {
           //Ottengo il tr dal link
           var tr = this.parentNode.parentNode;
           //Lo cancello
           tr.parentNode.removeChild(tr);
           myVar.id = myVar.id-3;
           
           // qui vorrei accedere agli id dei campi text della riga che sto cancellando
           // COME SI FA?
        }
    }
    
    //Cancella il tbody creando un altro elemento tbody e sostituendolo
    var emptyTbody = function(){
       var tbody = document.getElementById("MyContent");
       var newTbody = document.createElement("tbody");
       tbody.parentNode.replaceChild(newTbody, tbody);
       newTbody.id = "MyContent";
       myVar.id = 0;
    }
    </script>
    grazie
    Guidino

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542
    Nessun aiuto?
    Guidino

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se c'e' un solo input
    tr.getElementsByTagName('input')[0].id
    altrimenti cicla per la lunghezza di
    tr.getElementsByTagName('input')
    e ricavati via via tutti gli id

    il tutto, ovviamente, prima di cancellare tr

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542
    Funziona, grazie.
    Guidino

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542
    Ancora un aiuto su questa discussione, se è possibile.
    Con il codice riportato nella discussione aggiungo e cancello righe, ma alla fine devo fare un check sui campi di tutte le righe (non cancellate)

    Se ciclo per la lunghezza di tr.getElementsByTagName('input') come mi è stato detto fa fCaldera così:

    var n = tr.getElementsByTagName('input').length;
    for (i=0; i<n; i++)
    {
    alert (document.getElementById(String(i)).value);
    }

    va in errore quando valuta una riga che è stata cancellata.
    Come posso evitare questo errore?

    Grazie
    Guidino

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.