Avatar billede krab Praktikant
30. august 2007 - 16:50 Der er 8 kommentarer og
1 løsning

DOM i FF ikke i IE ?

<table cellpadding="2" cellspacing="0" id="callcenterdata">
</table>

<script type="text/javascript">
function generateCallcenter(){
    var topTr;
    topTr = document.createElement("tr");
    var td1;
    td1 = document.createElement("td");
    td1.className = 'show_td';
    td1.width = "100";
    var td1text;
    td1text = document.createTextNode("Nummer");
    td1.appendChild(td1text);
    topTr.appendChild(td1);
    var td2;
    td2 = document.createElement("td");
    td2.className = 'show_td';
    td2.width = "150";
    var td2text;
    td2text = document.createTextNode("Navn");
    td2.appendChild(td2text);
    topTr.appendChild(td2);
    var td3;
    td3 = document.createElement("td");
    td3.className = 'show_td';
    td3.width = "100";
    var td3text;
    td3text = document.createTextNode("E-mail");
    td3.appendChild(td3text);
    topTr.appendChild(td3);
    document.getElementById("callcenterdata").appendChild(topTr);
}
generateCallcenter();
</script>
Avatar billede w13 Novice
30. august 2007 - 17:52 #1
Ok?
Avatar billede krab Praktikant
30. august 2007 - 18:04 #2
Hehe..,! Sorry,. Teksten manglede li..

Koden virker i FF men ikke i IE .. Kan nogen se hvad grunden til dette er?
Avatar billede olebole Juniormester
30. august 2007 - 18:39 #3
<ole>

Et table-element kan ikke have tr-elementer som børn. tr-elementer skal appendes til et thead-, tbody- eller tfoot-element. Selvom du sjusker i din daglige kode, indskriver browseren altid et tbody-element, hvis det er udeladt  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
30. august 2007 - 18:45 #4
- og så ville jeg bytte lidt om på rækkefølgen og brugt styles i stedet for HTML-attributter til cellernes bredder:

<table cellpadding="2" cellspacing="0">
<tbody id="callcenterdata"></tbody>
</table>

<script type="text/javascript">
function generateCallcenter(){
    var topTr;
    topTr = document.createElement("tr");
    document.getElementById("callcenterdata").appendChild(topTr);
    var td1;
    td1 = document.createElement("td");
    topTr.appendChild(td1);
    td1.className = 'show_td';
    td1.style.width = "100px";
    var td1text;
    td1text = document.createTextNode("Nummer");
    td1.appendChild(td1text);
    var td2;
    td2 = document.createElement("td");
    topTr.appendChild(td2);
    td2.className = 'show_td';
    td2.style.width = "150px";
    var td2text;
    td2text = document.createTextNode("Navn");
    td2.appendChild(td2text);
    var td3;
    td3 = document.createElement("td");
    topTr.appendChild(td3);
    td3.className = 'show_td';
    td3.style.width = "100px";
    var td3text;
    td3text = document.createTextNode("E-mail");
    td3.appendChild(td3text);
}
generateCallcenter();
</script>
Avatar billede krab Praktikant
31. august 2007 - 09:03 #5
Perfekt... Du for sej :D..

Du vi er igang, kan du så fortælle mig hvorfor dette ikke virker i IE, men virker fint i FF ->
topTr.setAttribute("onclick","changeCallcenter(\"" + data[index].id + "\")");
Avatar billede olebole Juniormester
31. august 2007 - 14:45 #6
Du kan ikke bruge setAttribute til event-handlers. Brug attachEvent i IE og addEventListener i FF:

if (topTr.addEventListener) topTr.addEventListener("click", function(){changeCallcenter(data[index].id)}, false);
else if (topTr.attachEvent) topTr.attachEvent("onclick", function(){changeCallcenter(data[index].id)});
else topTr.onclick = function(){changeCallcenter(data[index].id)};
Avatar billede olebole Juniormester
31. august 2007 - 14:46 #7
- og addEventListener er i denne forbindelse den standardiserede, valide metode  :)
Avatar billede krab Praktikant
05. september 2007 - 14:25 #8
Ok, det ka jeg ikk helt få til at virke.. .. :/

Jeg laver et loop..

Hvordan laver jeg dette, så den ikke ændre funktionen hver gang loopet køres igennem? :)
På forhånd tak for hjælpen.

uddrag

for(index in data){

var topTr;
topTr = document.createElement("tr");
topTr.style.backgroundColor = bg;
topTr.style.cursor = 'pointer';
topTr.id = 'show' + data[index].id;


if (topTr.addEventListener) topTr.addEventListener("click", function(){changeCallcenter(data[index].id)}, false);
else if (topTr.attachEvent) topTr.attachEvent("onclick", function(){changeCallcenter(data[index].id)});
else topTr.onclick = function(){changeCallcenter(data[index].id)};


document.getElementById("callcenterdata").appendChild(topTr);

}
Avatar billede krab Praktikant
06. september 2007 - 08:39 #9
Prøver li at åbne en ny spm med problemet.. men tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester