Avatar billede pollas Nybegynder
14. februar 2001 - 03:23 Der er 3 kommentarer og
1 løsning

NS6 er ikke sjovt mere...

Ja, jeg kæmper stadig med NS6, der som jeg har lært bruger getElementById (god DOM-ting), men jeg er lidt uklar på syntaksen...

Jeg har disse her:

<DIV id = subtxt><img src=\"\" width=143 height=73 border=0 name=\"stxt\" id=\"stxt\" alt=\"\"></div>

<DIV id = nyhed>
<a HREF=java script:DoPage(1) ONMOUSEOVER=\"knap_act(1,\'nyhed\'); window.status = \'Nyheder.\'; return true\" ONMOUSEOUT=\"knap_inact(1,\'nyhed\'); window.status = \'\'; return true\"><img src = \"\" width=66 height=21 border=0 name=\"btn1\" alt=\"\"></a>
</DIV>

.. med noget JS:

function1(la) {

    if (DOM) {
    // hvad gør jeg her ?
    }
    else if (IE4){
    eval(\'document.stxt.src = StxtArray[la].src\');
    eval(\'document.poff.src = PoffArray[la].src\');
    }
    else if (NS4){
    eval(\'document.layers.subtxt.document.images.stxt.src = StxtArray[la].src\');
    eval(\'document.layers.payoff.document.images.poff.src = PoffArray[la].src\');
    }

}

og mere:

eval(\'document.btn0.src = ButtonArray[0][la][0].src\');

og mere:

function knap_act(btn,idname)
{
    if (pg != btn)
        if (DOM)
        {
        eval(\'document.getElementById.btn\'+btn+\'.src = ButtonArray[btn][la][1].src\');
        }
        else if (IE4)
        {
        eval(\'document.btn\'+btn+\'.src = ButtonArray[btn][la][1].src\');
        }
        else if (NS4)
        {
        eval(\'document.layers.\'+idname+\'.document.images.btn\'+btn+\'.src = ButtonArray[btn][la][1].src\');
        }
}   

Hvordan laver jeg dette om til DOM-cool kode? Jeg skal først og fremmest have fat i getElementById(\"\"), der vist tager argumentet som streng, men kan jeg bruge \'src\' direkte?
Altså document.getElementById(\"btn1\").src = [whatever] ? Eller er problemet, at jeg skal trigge billedet direkte, og at der altså mangler et id - i stedet for et navn...?

Jeg er ved at være lidt lost, så al hjælp vil blive værdsat :) Gerne med eksempler på nye versioner af ovenstående kode...

På forhånd tak,

/pollas
Avatar billede jumper Nybegynder
14. februar 2001 - 03:35 #1
Først skal vi lave DOM, IE4 og NS4 variablerne:

DOM = document.getElementById ? true : false;
IE4 = document.all ? true : false;
NS4 = document.layers ? true : false;

Og så skal vi have fjernet alt det der grimme eval(), det er unødvendigt! Lad os skrive function 1 (husk at din funktion ikke kan hedde dette, kald den f.eks. a1)

function a1(la){
  if (DOM){
    document.getElementById(\'stxt\').src = StxtArray[la].src;
    document.getElementById(\'poff\').src = PoffArray[la].src;
  } else if (IE4){
    document.stxt.src = StxtArray[la].src;
    document.poff.src = PoffArray[la].src;
  } else if (NS4){
    document.layers.subtxt.document.stxt.src = StxtArray[la].src;
    document.layers.payoff.document.poff.src = PoffArray[la].src;
  }
}

hmm, lad os ændre den lidt, den fylder jo meget. For det første kan du gøre det samme i DOM som i IE4, nemlig referere billedet direkte på document objektet.

function a1(la){
  var sImg, pImg;
  if (document.stxt){
    sImg = document.stxt;
    pImg = document.poff;
  } else if (document.layers){
    sImg = document.layers.subtxt.document.stxt;
    pImg = document.layers.payoff.document.poff;
  }
  sImg.src = StxtArray[la].src;
  pImg.src = PoffArray[la].src;
}

Resten af dit kode er godt nok ulæseligt (på grund af det eval), så jeg prøver lige at forstå hvad det skal lave og vender tilbage.

/Thor
Avatar billede pollas Nybegynder
14. februar 2001 - 03:38 #2
Smukt :)

Er ikke ekspert, men har heldigvis ikke ansvaret for evals, der er et leftover fra overtaget kode (hvoad skal det gøre godt for, egentlig?)

Kigger på det!

/pollas
Avatar billede pollas Nybegynder
14. februar 2001 - 15:35 #3
Hmm, kan godt se ideen, men har følgende problemer:

IE5: Trigger jo på getElementById, men brokker sig over manglende obkekter

NS6: Ingenting sker...

Har img-tags en ordentlig id?
Avatar billede pollas Nybegynder
14. februar 2001 - 19:49 #4
Problem solved!

Den virkelige hjælp var såmænd, at man jo kan referere direkte på objektet. Så da først den rigtige detection blev lavet, og jeg fik rettet lidt hist og pist, så...

Mange tak!
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