Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema con nodi in IE e FF

    Cerco di esporre brevemente il problema senza postare lunghi e macchinosi pezzi di codice.
    Ho una tabella (creata dinamicamente, con php). Per ogni riga, tra le altre cose, c'è un pulsante 'Inserisci' con il quale inserire una nuova riga appena sotto.
    Creo un nuovo elemento tr, creo i vari td, creo i vari contenuti per i vari td, appendo ricorsivamente i contenuti ai td, i td ai tr e alla fine concludo con un:
    document.getElementById('riga_'+id).appendChild(ri ga);

    che mi lega la nuova riga appena creata (riga), con la riga_id.

    In IE funge.
    In FF si e no, nel senso: la riga viene correttamente creata (per "correttamente" intendo dire che tutti i td e contenuti sono giusti) ma viene creata A FIANCO della riga dalla quale e partita la chiamata, invece che sotto. E continuando a premere 'Inserisci' tutte le righe nuove vengono messe una di fianco a l'altra (a destra), creando una vera e propria schifezza!!!

    Ovviamente sbaglio qualcosa, che IE 'corregge' ma FF (e anche Opera) no!

    Ma cosa?

    EDIT:
    ho fatto questa prova: invece che mettere document.getElementById('riga_'+id).appendChild(ri ga); ho messo:
    document.getElementById("tabella").appendChild(rig a); (dove tabella è l'id della tabella (ma va!?!?)
    succede questo:
    in IE non funge per niente.
    in FF funge, nel senso che crea una nuova riga DOPO L'ULTIMA riga della tabella (almeno stavolta la crea sotto, invece che a destra)

    Come faccio a dirgli che la deve creare appena sotto la riga dalla quale è stato invocato il pulsante 'Inserisci'??

  2. #2
    uppettino... e nel frattempo aggiorno:

    invece che usare createElement("tr"); sto provando ad usare ID_Tabella.insertRow(id)

    funziona sia su IE che FF (e Opera)... il problema è che adesso... oddio, faccio prima a fare un esempio se no non ci capisco niente io che lo scrivo figuriamoci voi che lo leggete:

    tabella con 10 righe e 4 colonne
    nella 4 colonna (per tutte le righe) c'è il pulsante 'Inserisci' che inserisce una nuova riga APPENA SOTTO

    mi trovo nella 4 riga... clicco 'Inserisci' e mi crea una nuova riga appena dopo la 4

    se pero adesso clicco 'Inserisci' in una riga successiva, perdo una posizione
    GIUSTAMENTE!

    nel senso: i vari pulsanti 'Inserisci' agivano ognuno su una certa riga. Nel momento in cui gli creo altre righe, quei riferimenti punteranno a delle righe diverse!

    Sicuramente non c'avrete capito niente... a meno che GIA non sapete di cosa sto parlando!!!

    Cmq... mi sa che mi conviene seguire questa strada... almeno funziona su ff e ie... a meno che qualcuno non mi da una mano sulla vecchia versione (che funzionava PERFETTAMENTE su IE, senza perdere i riferimenti con le nuove righe, ma male con FF)

  3. #3
    forse ho quasi risolto, se trovo un modo per risalire alla posizione di una riga in una tabella.

    Nel senso: tutte le righe di una tabella contengono un id univoco
    tramite quell'id posso quindi risalire a una certa riga
    (tr=document.getElementById('riga_id'); )

    adesso, come faccio a sapere tr in che posizione (ovvero in che numero di riga) si trova nella tabella?

  4. #4
    ce l'ho quasi fatta!!!

    Codice PHP:
    tr=document.getElementById('riga_'+id);
        
    for(
    j=0;j<=tab1.rows.length;j++){
         if (
    tab1.rows(j).cells(0).innerText==id) { indice=j+1;break;}
    }

    riga tab1.insertRow(indice); 
    Spiego il concetto: "scanno" le righe della tabella fino a trovare quella che contiene, nella prima colonna, un certo id. A quel punto il gioco è fatto. Ho trovato l'indice dopo il quale inserire la nuova riga.

    Perfetto su IE
    Perfetto su Opera
    Su FF non funge un tubo!!

    Certo, su FF bisogna usare textContent invece di innerText, ma non basta!
    non gli piacciono neanche i metodi rows() e cells().... perche???

    che devo fare per accedere al contenuto di una certa cella con firefox??? :master:

  5. #5
    risolto:
    il codice di prima ma con le parentesi quadre invece che tonde (per rows e cells) e ovviamente textContent invece che innerText


    cmq... mi piacerebbe capire perche non fungeva la soluzione originale... quella con figli parenti e affini...
    :master:

  6. #6
    Io credo FF consideri anche l'elemento <tbody> di una tabella.. anche se non ce l'hai messo.
    Lo dico perchè non mi è chiarissimo cosa hai fatto o non fatto
    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

  7. #7
    Si è vero, infatti c'è il tbody nel documento... anche se poi non lo sfrutto esplicitamente con js...

    praticamente, per fare un sunto della discussione, o del monologo per meglio dire:
    l'obiettivo è quello di creare delle nuove righe all'interno di una tabella gia esistente. Creare queste nuove righe direttamente sotto la riga dove è stato premuto il pulsante 'Inserisci'

    Ero partito con l'usare la nuova riga con document.createElement("tr"); per poi creare i vari td e contenuti interni, appendendo gli uni agli altri
    Ma questo creava un problema con FF e Opera (le righe venivano inserite a destra, invece che in basso)

    Invece che usare createElement ho usato insertRow(ind), che mi crea una riga vuota in posizione ind
    A questa riga appendo tutto il materiale di cui prima...

    E in questo modo ottengo lo stesso risultato PERFETTO sia con IE che con FF che con Opera.

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.