Avatar billede andreas13_fam Nybegynder
13. april 2009 - 21:39 Der er 6 kommentarer og
1 løsning

det driller bare

TEST siden ses her: http://www.netkogeren.a-mweb.dk/TEST/PHP-JS-tolk/

Problemmet opstår når man klikker på det første billede med X i (http://www.netkogeren.a-mweb.dk/TEST/PHP-JS-tolk/deaktiver.png) og derefter klikker igen. 2. gang sker der nemlig intet - hvorfor.

Det handler om--
HTML:
<a title="deaktiver række" onclick="deaktiver(this);return false" href="#">
<img width="20" height="20" style="border:none; position: relative; top: 2px;" alt="deaktiver række" src="deaktiver.png">
</a>
java script:
function deaktiver(oLnk)
{
    for (var i=0;i<14;i++)
    {
        if (i!=0 && i!=5)
        {
            if(oLnk.parentNode.parentNode.childNodes[i].firstChild)
            {
            oLnk.parentNode.parentNode.childNodes[i].firstChild.style.display = 'none';
            }
        }
    }
oLnk.firstChild.src = 'aktiver.png';
oLnk.onclick = 'aktiver(this);return false';
}

function aktiver(oLnk)
{
alert('test');
    for (var i=0;i<14;i++)
    {
        if (i!=0 && i!=5)
        {
            if(oLnk.parentNode.parentNode.childNodes[i].firstChild)
            {
            oLnk.parentNode.parentNode.childNodes[i].firstChild.style.display = 'block';
            }
        }
    }
oLnk.firstChild.src = 'deaktiver.png';
oLnk.onclick = 'deaktiver(this);return false';
}
Avatar billede olebole Juniormester
14. april 2009 - 01:09 #1
<ole>

Siden virker lidt i FF, endnu mindre i Opera - og slet ikke i IE  =)

Jeg tror, det hænger sammen med din brug af childNodes - og jeg tror, vi har talt om det før. Browserne fortolker white space i koden forskelligt. Mellemrum mellem tags fortolkes i visse browsere som en node, hvilket giver forskelligt antal childNodes og elementer  ;o)

Brug i stedet collections, oprettet med getElementsByTagName - eller spørg på, om den pågældende childNode har NODE.nodeType==1, før du bruger den i den tro, der er tale om et DOMElement

/mvh
</bole>
Avatar billede andreas13_fam Nybegynder
14. april 2009 - 15:02 #2
Jeg vil gerne teste det men jeg sidder ikke lige foran min computer nu. Men jeg har lige et par "kritiske" spørgsmål, men det overlever du nok :)
1. Det er kun funktionen der sætter display="block" der ikke virker. Og det er den eneste forskæl på de 2 funktioner.
2. Burde den ikke vise en fejlmeddelse, hvis det ikke lykkes.
3. Alle elementer er oprettet med DOM, så jeg kan da ikke forstille mig at jeg lavet en textNode, og bruge spildte kræfter på det.
Avatar billede olebole Juniormester
14. april 2009 - 15:37 #3
1) Måske
2) Nej
3) Det er muligt, men jeg er 100% overbevist om det modsatte  ;o)

Test dette:

<div id="foo">
<div>Div #1</div>
<div>Div #2</div>
<div>Div #3</div>
<div>Div #4</div>
</div>

<div id="fooBar"><div>Div #1</div><div>Div #2</div><div>Div #3</div><div>Div #4</div></div>

<script type="text/javascript">
// Her returnerer IE 4 - mens FF og Opera returnerer 9
alert(document.getElementById("foo").childNodes.length)

// Her returnerer både IE, FF og Opera 4
alert(document.getElementById("fooBar").childNodes.length)
</script>
Avatar billede olebole Juniormester
14. april 2009 - 15:40 #4
document.getElementById("foo").getElementsByTagName("div").length

- og:

document.getElementById("fooBar").getElementsByTagName("div").length

- returnerer begge 4 i alle tre browsere  ;o)
Avatar billede olebole Juniormester
14. april 2009 - 15:49 #5
Til gengæld sker der noget andet sjovt i IE. Tabellen bliver oprettet fint, men dens offsetWidth og -Height er 0, når man spørger på det ...?!??!!!
Avatar billede andreas13_fam Nybegynder
14. april 2009 - 16:34 #6
getElementsByTagName("td") løser desvære ikke problemet. Og det er der nok heler ikke noget andet i den funktion der gør. Efter som den aldrig bliver aktiveret.

Jeg har uploadet en ny version hvor du kan udskrive domkoden, og hvor "alert('test');" indgår i "function aktiver(oLnk)"
Avatar billede andreas13_fam Nybegynder
15. april 2009 - 17:41 #7
Det er generelt bare this.onclick = '';
der virker dårligt. Sletter man derimod elementet og opretter et nyt virker det fint.
Tak for forsøget :D
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