Har skapat en mycket enkel visa/dölj för ul, i IE räknar den rätt på antalet li i varje ul, men inte i ff.. blir hel konstigt där..
vad tror ni?! Såga mig nu vid fotknölarna
var eDiv = document.getElementsByTagName('div');
function newsList() {
var i;
try {
for(i=0;i<eDiv.length;i++) {
if(eDiv[i].className == 'visible') {
// dölj div-elementen som har className==visible
eDiv[i].className = 'invisible';
// skapa nytt a-element
var a = document.createElement('a');
// räkna antalet noder i ul som ligger i diven med ordningen i.
var listItems = eDiv[i].getElementsByTagName('ul')[0].childNodes.length;
// Skapa text för visa/dölj länkarna beroende på antalet nyheter (li-items)
if(listItems > 1) {
var txt = document.createTextNode('Visa alla ' + listItems + ' nyheter!');
} else {
var txt = document.createTextNode('Visa nyheten!');
}
a.setAttribute('href','javascript:expand('+i+','+listItems+');');
// Lägg till text till länken.
a.appendChild(txt);
// Lägg till den skapade länken sist i föräldertaggen.
eDiv[i].appendChild(a);
}
}
} catch(e) {
alert(e.message);
}
}
function expand(item,listItems) {
try {
if(item) {
eDiv[item].className = 'visible';
eDiv[item].lastChild.href='javascript:collapse('+item+','+listItems+');';
// läs kommentar högre upp..
if(listItems > 1) {
var txt = 'Dölj alla ' + listItems + ' nyheter!';
} else {
var txt = 'Dölj nyheten!';
}
// Sätt text för länk!
eDiv[item].lastChild.innerHTML = txt;
}
} catch(e) {
alert(e.message);
}
}
function collapse(item,listItems) {
try {
if(item) {
eDiv[item].className = 'invisible';
eDiv[item].lastChild.href='javascript:expand('+item+','+listItems+');';
// läs kommentar högre upp..
if(listItems > 1) {
var txt = 'Visa alla ' + listItems + ' nyheter!';
} else {
var txt = 'Visa nyheten!';
}
// Sätt text för länk!
eDiv[item].lastChild.innerHTML = txt;
}
} catch(e) {
alert(e.message);
}
}
// load event
addLoadEvent(newsList);
IE visar de korrketa antalet:
i IE: 27, 9, 29, 1
och FF visar tok konstigt fel
i FF: 55, 19, 59, 3
det blir en skillnad: 28, 10, 30, 2 på antal li i varje ul i varje div..
Det är skillnad på vad IE och FF returnerar när man anropar childNodes.length. FF gör som W3C-spec:en säger och inkluderar whitespace (dvs radbrytningar o dyl) som textnoder i nodträdet, vilket inte IE gör. Läs mer på Mozilla.org.
För att lösa problemet kan du ju t.ex. skriva om funktionen så den går igenom .childNodes men bara räknar noder med ett .nodeName som är lika med 'li'.
Det är skillnad på vad IE och FF returnerar när man anropar childNodes.length. FF gör som W3C-spec:en säger och inkluderar whitespace (dvs radbrytningar o dyl) som textnoder i nodträdet, vilket inte IE gör. Läs mer på Mozilla.org.
För att lösa problemet kan du ju t.ex. skriva om funktionen så den går igenom .childNodes men bara räknar noder med ett .nodeName som är lika med 'li'.
Upptäckte det.. Tack så mycket!
Får kolla detta med .nodeName, då kanske man får rätt antal i FF också hehe..
261 ms totalt · 4 externa anrop · v20260731065814-full.1b2494f0