Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    Azioni javascript su elementi creati via javascript

    Signori, questa è preoccupante.

    Tramite una funzione javascript associata alla pressione di un pulsante ho creato dinamicamente alcune righe di una tabella, con relative colonne e relativo testo al loro interno. Tutto funziona.

    Poi ho provato tramite un'altra funzione javascript associata ad un secondo pulsante a eliminare tale riga ma senza esito; leggo "argomento non valido", ed insospettito dal fatto che forse c'è questo messaggio perché js non vede la riga di indice "0" appena creata che ho cercato di eliminare, con un alert cerco di "carpire" quante righe la mia pagina crede di avere. Un alert sul numero di righe di quella tabella mi dà 0, non considerando quindi le righe create dinamicamente via js.

    La cancellazione riga è un esempio (su quelle righe devo fare diverse operazioni), per chidervi: come posso da js eseguire azioni su elementi creati in modo dinamico via js, ovvero come posso fare in modo che js veda e possa gestire elementi che con lo stesso js sono stati creati?

    Grazie infinite.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Visto anche la problematica dell'altra discussione meglio se posti il link alla pagina pubblica, cosi facciamo prima, in alternativa auguri.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    La pagina è offline sul mio pc ma dopo 987897 prove ho semplificato enormemente il quesito ed ho capito che dipende dal browser. Per la seconda vola, solo IE dà problemi. Mi dispiace, ma è tutto in locale sul mio pc. Ma tanto sono pochi banali frammenti di codice, capirai subito, alla luce delle ultime semplificazioni.

    Data una tabella, ho creato dinamicamente tramite una funzione javascript alcune righe, quindi alcune celle ed al loro interno alcuni testi. Ora con una seconda funzione associata ad un secondo pulsante ho creato un alert che mi dà il numero delle righe di quella tabella. Cliccando sul primo pulsante, in qualsiasi browser vedo la tabella popolarsi correttamente con i suoi elementi.

    Cliccando sul secondo, con qualsiasi browser vedo un alert "5", che dà in effetti il numero delle righe create. Solo con IE quel numero è "0" come se in IE le funzioni JS non vedessero quanto creato dopo il caricamento della pagina. Come sempre, da maniaco della chiarezza, vi posto il codice. Ti ringrazio in anticipo, appena metto un post stai sempre lì a rispondere. Anche sul quesito di prima apparentemente non risolto mi avete fatto capire due cose importantissime (split e refresh su IE).

    codice:
    function createTableRows(){
    var myTable = document.getElementById("myTable");
    (qui con i create element e create text node creo quanto mi serve ed appendo gli oggetti agli elementi appena creati, non ti annoio su questa parte perché tanto va benissimo
    }
    
    function rowTest(){
    var myTable = document.getElementById("myTable");
    alert(myTable.rows.length);
    }
    Pagina web
    codice:
    ....
    <table id="myTable">
    
    </table>

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    inserisci un <tbody> nel markup della tua tabella ed appendi ad esso.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Grazie Xinod, sei gentilissimo... Intendi

    <table>
    <tbody>

    </tbody>
    </table>

    ?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    FUNZIONA GRAZIE TANTISSIMO

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.