Visualizzazione dei risultati da 1 a 9 su 9

Discussione: nodi con Firefox

  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    nodi con Firefox

    Ho questa riga di una tabella:
    codice:
    <tr id="tr1">
    	<td>prova1</td>
    	<td>prova2</td>
    	<td><span>prova3</span></td>
    	<td><INPUT type="text" ID="Text1" NAME="Text1" value="prova4"></td>
    </tr>
    Premetto che so leggere e scrivere gli argomenti delle varie celle, con IE e Firefox, però mi piacerebbe pure capire il comportamento di Firefox

    ottengo 9 nodi della riga
    codice:
    alert(tr_old.childNodes.length);//==>9
    Perchè i nodi TD sono gli elementi dispari?
    cioè, per il primo nodo ottengo undefined
    codice:
    alert(tr_old.childNodes[0].tagName);//==>undefined
    per il secondo nodo ottengo:
    codice:
    alert(tr_old.childNodes[1].tagName);//==>TD
    cioè, perchè al posto di ottenere i nodi TD alle posizioni 0,1,2 li ottengo alle posizioni 1,3,5

    grazie
    Pietro

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Infatti non so il perche ma inserisce un nodo prima della prima riga, uno dopo l'ultima e una tra ogni riga.
    Questo spiega i tuoi 9 nodi.

    Di più guardando il tipo dei nodi pari si vede con sono del tipo textNode ma che non contegono nulla .

    Prova questo. Clicca una prima volta e poi una seconda.
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <table summary="">
    <tr id="tr1">
    <td id="t1"><span id="s1">dddddddddddd</span></td>
    <td id="t2">eeeeeeeeeeee</td>
    <td id="t3">fffffffffffff</td>
    </tr>
    </table>
    <input type="button" value="clicca" onclick="pippo()">
    <script language="JavaScript" type="text/javascript">
    <!--
    function pippo() {
    var oColl = document.getElementById('tr1');
    for (i=0;i<oColl.childNodes.length;i++) {
     if (oColl.childNodes[i].tagName != null) {
      alert("tr1 con tagName : "+oColl.childNodes[i].id);
     } else {
      alert("tr1 senza tagName : "+oColl.childNodes[i].nodeValue);
    	oColl.childNodes[i].insertData(0, 'pippo') ;
     }
    }
    }
    //-->
    </script>
    
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti ringrazio della risposta
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non ci crederai ma ho scoperto l'inghippo e la cosa non mi piace per niente

    in pratica, per il signor Firefox, questo
    codice:
    <tr id="tr1">
    	<td>prova1</td>
    è diverso da questo:
    codice:
    <tr id="tr1"><td>prova1</td>
    perciò, mentre nel tanto criticato IE, posso scrivere:

    alert(tr_old.childNodes[colonna].innerHTML);

    in Firefox è meglio scrivere:

    var cells = tr_old.getElementsByTagName("TD");
    var c = cells[colonna];
    alert(c.innerHTML);



    Pietro

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Niente di strano in questo, anzi.
    Se tu metti uno spazio o una tabulazione tra due tag, FF interpreta correttamente quello spazio come testo e quindi quello spazio diventa un sottonodo del primo tag.

    Magari si potrebbe discutere sull'utilità di considerare anche gli spazi come nodi, ma se tu volessi frapporre del codice tra due tag? FF te lo consentirebbe...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    Niente di strano in questo, anzi.
    Se tu metti uno spazio o una tabulazione tra due tag, FF interpreta correttamente quello spazio come testo e quindi quello spazio diventa un sottonodo del primo tag.

    Magari si potrebbe discutere sull'utilità di considerare anche gli spazi come nodi, ma se tu volessi frapporre del codice tra due tag? FF te lo consentirebbe...

    Io sono un pochino (molto) confuso. Non ho mai visto scrivere:

    <tab>prova<tr>prova<td>prova**** ed ho sempre creduto che <tr> possedesse solo <td> o <th>

    se parliamo invece di xml allora il discorso è diverso e mi pare evidente che un nodo possa contenere nodi di tutti i tipi.

    Ma, qui sta il busillis, chi ha ragione, nel caso di una tabella, IE o Firefox? Possibile che IE abbia sempre torto?

    Ciao
    Pietro

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Originariamente inviato da pietro09
    Io sono un pochino (molto) confuso. Non ho mai visto scrivere:

    <tab>prova<tr>prova<td>prova**** ed ho sempre creduto che <tr> possedesse solo <td> o <th>

    se parliamo invece di xml allora il discorso è diverso e mi pare evidente che un nodo possa contenere nodi di tutti i tipi.

    Ma, qui sta il busillis, chi ha ragione, nel caso di una tabella, IE o Firefox? Possibile che IE abbia sempre torto?

    Ciao
    IE ha torto di default !!!!
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da badaze
    IE ha torto di default !!!!

    Lo ingrandisco e lo metto davanti allo schermo
    Pietro

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da pietro09
    Io sono un pochino (molto) confuso. Non ho mai visto scrivere:

    <tab>prova<tr>prova<td>prova**** ed ho sempre creduto che <tr> possedesse solo <td> o <th>
    e i tag tbody, thead e tfoot dove li mettiamo???

    Inoltre il discorso vale in generale, non solo per i tag delle tabelle
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.