Gå til innhold

Tildele .onclick verdi til eit element via javascript


Anbefalte innlegg

Hei!

 

Det har seg slik at eg har ein ting eg ikkje finn ut av. Pleier som regel å implementere ein "onclick = function()" i HTMLen for å køyre funksjonen når eit element trykkjast på, men har som prinsipp at CSS ikkje går inn i HTMLen, og vil ha det same med Javascript. Altså, at eg setter "src = 'javascript.js' ", og alt blir ordna av Javascripten.

 

Tenkte da fyst at dersom eg skulle gjere det her med eit element med " id = 'button1' ", så ville dette fungere:

document.getElementById("button1").onclick = alert("Hei");

 

men iom. at scripten blir loadet før HTMLen, så blir "document.getElementById('button1')" lik 'null'. Dette duger da ikkje. Prøvde så å sette inn 'defer' i script-tagen, men dette fungerte i kvartfall ikkje i Firefox. Prøvde så ein alternativ metode for å laste scriptet etter HTMLen;

<script type="text/javascript">

var newScript = document.createElement("script");
newScript.type = "text/javascript";
newScript.src = "javascript.js";
document.getElementsByTagName("head")[0].appendChild(newScript);

</script>

 

Dette lastet scriptet, og error console viser ingenting om at "document.getElementById('button1') = null". Merkeleg nok, så fungerer det fortsatt ikkje. Med ein gong sida er ferdiglasta, så hoppar det opp ein boks der det står 'Hei', utan at eg har klikka på knappen. Dersom eg klikkar på knappen, så skjer det absolutt ingenting.

 

Kva er problemet? :)

 

PS: Eg er ny, så forklar kva dykk gjer. Takk!

 

EDIT: Problem solved. Må ikkje bruke ein function call, men berre return-verdien til funksjonen som skal tildeles .onclick'en.

Endret av JarlG
Lenke til kommentar
  • 2 uker senere...
Videoannonse
Annonse

Å legge til JS på den måten du gjør her er ganske bakvendt.

Ønsker du at funksjonene fra JS i HEAD skal lastes når siden er ferdig burde du heller bruke en eventHandler som setter onLoad på BODY.

 

Alternativt kan du bare inkludere JS i bunn av dokumentet ditt på samme måte som du gjør i HEAD. Dette er også god skikk iht. optimalisering da innholdet lastes fortere slik at din bruker kan begynne å lese før funksjonene er klare. Eneste problemet som kan forekomme her er om JS avhengige deler av nettsiden fordrer klikk før siden er ferdiglastet. I dette tilfellet kan du legge til JS både i HEAD og mot enden av dokumentet.

 

Referanse: http://developer.yahoo.com/performance/rules.html#js_bottom

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...