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

    problema con appendChild in IE

    salve,
    ho questo problema con appendChild in IE:

    ho una tabella con id tabella:
    <table style="border:1px solid #999999;" width="550" align="center" id="tabella" >
    <tr style="background-color:#CCCCCC;" >
    <th width="30" class="hand" style=" border-bottom:1px solid #999999" >[img]../Common/msg_read.gif[/img]</th>
    <th width="100" style=" border-bottom:1px solid #999999">Da:</th>
    <th width="270" style=" border-bottom:1px solid #999999">Oggetto</th>
    <th width="150" style=" border-bottom:1px solid #999999">Data</th>
    </tr>
    </table>


    ora ho un metodo in javascript/ajax che ottiene dei dati e crea dinamicamente dei tr/td per popolare la tabella...ora in firefox nessun problema... la tabella viene popolata correttamente... mentre in ie sembra non funzionare il metodo appendChild, infatti la tabella rimane vuota...

    quale può essere il problema?
    allego il metodo in js

    function popolaTabella(id,val1,val2,val3) {
    newTr=document.createElement("TR");
    newTr.setAttribute("id",id);
    newTd1=document.createElement("TD");
    newTd1.innerHTML="[img]../Common/msg_read.gif[/img]";
    newTd2=document.createElement("TD");
    newTd2.innerHTML=val1;
    newTd2.setAttribute("class","hand");
    newTd2.style.fontWeight="bold";
    newTd3=document.createElement("TD");
    newTd3.innerHTML=val2;
    newTd3.style.fontWeight="bold";
    newTd4=document.createElement("TD");
    newTd4.innerHTML=val3;
    newTd4.style.fontWeight="normal";
    newTr.appendChild(newTd1);
    newTr.appendChild(newTd2);
    newTr.appendChild(newTd3);
    newTr.appendChild(newTd4);
    document.getElementById("tabella").appendChild(new Tr);
    }


    la cosa davvero strana è la seguente...
    se toldo id="tabella" dal tag <table> e lo inserisco nel tag <tr> cioè quello dell'intestazione della tabella, allora in ie mi vengono aggiunti i tr normalmente(bòòò), invece in firefox (come è logico), i tr vengono visualizzata in sequenza dopo il primo tr...

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    IE consente di appendere le righe purchè siano dentro un blocco tbody

    dopo i vari <th> aggiugi

    <tbody id="tbodytabella">
    </tbody>

    e l'ultima riga della funziona diventa

    document.getElementById("tbodytabella").appendChil d(newTr);



    Ciao
    Vuoi aiutare la riforestazione responsabile?

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

  3. #3
    un grande!!!

    in un colpo hai risolto due problemi che mi stavano facendo impazzire!!!!!!


    a buon rendere...

  4. #4
    Ciao.
    Anche questo dà problemi con IE
    newTd2.setAttribute("class","hand");
    usa
    newTd2.className='hand';
    Per la cronaca esistono anche questi metodi:
    var dtable = document.getElementById( 'dataBody' );
    -dtable.insertRow(index)
    -dtable.insertCell(index)
    Anche questi da usare nella maniera suggerita
    da fcaldera.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    grazie!! non avevo notato che non funzionava la classe hand...

    comunque come si fa ad associare anche una funzione al tag

    tipo al tag tr associare la funzione onclick=funzione()

    ho provato con...

    nometag.setAttribute("onclick","funzione()");
    ma non sembra funzionare...

    grazie

  6. #6
    nometag.setAttribute("onclick","funzione()");
    nometag.onclick=function(){
    funzione();
    }

    Trovo molto utile questa funzione:
    Codice PHP:
    function addEvent(elmevTypefnuseCapture){
        if (
    elm.addEventListener){
            
    elm.addEventListener(evTypefnuseCapture);
                return 
    true;
         } else if (
    elm.attachEvent) {
                var 
    elm.attachEvent('on' evTypefn);
                return 
    r;
            } else {
                
    elm['on' evType] = fn;
            }
    }; 
    da usare in questo modo:

    addEvent(nometag,'click',funzione,false);



    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    scusa nella mia funzione ho aggiunto

    newTr.onclick=openPage(id);

    il risultato è che al caricamento viene subito chiamata la funzione onPage e non al click...
    inoltre ho provato anche newTr.onmouseover=funzione();

    e mi dice nn implementato....

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da pippuzzo80
    scusa nella mia funzione ho aggiunto

    newTr.onclick=openPage(id);

    il risultato è che al caricamento viene subito chiamata la funzione onPage e non al click...
    inoltre ho provato anche newTr.onmouseover=funzione();

    e mi dice nn implementato....
    newTr.onclick=function() {
    openPage(id);
    }
    Vuoi aiutare la riforestazione responsabile?

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

  9. #9


    che stupido... la risposta era nel thread stesso....

    grazie ad entrambi e buona domenica

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.