Avatar billede thomas_b Nybegynder
03. januar 2009 - 23:00 Der er 19 kommentarer og
1 løsning

Tildele alle link et javascript ?

Hej Eksperter...

Er der nogle der ligger inde med et snedigt træk til at tildele alle link en javascript-funktion ?
kunne være lækkert... :) tak
Avatar billede olebole Juniormester
03. januar 2009 - 23:10 #1
<ole>

Nu er det jo et ekstremt sparsom grundlag at skrive kode på, men det overordnede princip er:

window.onload = function(){
    var a = document.getElementsByTagName("a");
    for (var i=a.length-1; i>=0; i--) {
        a[i].onclick = function(){alert("hep")};
    }
}

/mvh
</bole>
Avatar billede thomas_b Nybegynder
03. januar 2009 - 23:26 #2
1000 tak ole...

Jeg har endnu et spørgsmål, god ikke lige til dette, hvis det er okay her...
kan man fra disse 2 fjerne funktionen "onmousemove" ??

document.getElementById("mark").addEventListener("onmousemove",showit,false);
document.getElementById("mark").attachEvent("onmousemove", showit);

Sidder lige og bøvler med det... hvis du forstår... :)
Avatar billede olebole Juniormester
03. januar 2009 - 23:36 #3
Selvtak  =)

document.getElementById("mark").removeEventListener("onmousemove",showit,false);
document.getElementById("mark").detachEvent("onmousemove", showit);
Avatar billede olebole Juniormester
03. januar 2009 - 23:38 #4
- og det selvfølgelig også den måde, du bør sætte dine event handlers på. Det var ikke så pædagogisk af mig at bruge den gamle metode i mit første indlæg  =)
Avatar billede thomas_b Nybegynder
03. januar 2009 - 23:40 #5
Jeg forklarede mig nok lidt dårligt... Er jo heller ikke lige skarp i JS...

Men jeg ønsker i realiteten denne funktion... (men virker jo klart nok ikke)...

document.getElementById("mark").addEventListener(showit,false);
document.getElementById("mark").attachEvent(showit);

:)
Avatar billede olebole Juniormester
04. januar 2009 - 00:09 #6
Jeg er vist ikke helt med. Kan du prøve at forklare, hvad du vil, med ord?  =)

Du kan sætte og/eller fjerne handleren for én eventtype ad gangen, men mens jeg skriver, opdager jeg i øvrigt pludselig en fejl. Der skal kun 'on' på eventtypen i IE:

document.getElementById("mark").addEventListener("mousemove",showit,false);
document.getElementById("mark").attachEvent("onmousemove", showit);

document.getElementById("mark").removeEventListener("mousemove",showit,false);
document.getElementById("mark").detachEvent("onmousemove", showit);
Avatar billede olebole Juniormester
04. januar 2009 - 00:14 #7
For lige at komme tilbage til dit spørgsmål, så er browseren nødt til at vide, hvilken event der skal udløse kaldet til funktionen. Du kunne mene én af andre eventtyper skulle udløse den  =)
Avatar billede thomas_b Nybegynder
04. januar 2009 - 00:18 #8
Ja, se det er hele den del af scripet...

<script>
function init() {
    var oDiv = document.getElementById("mark");
    if (!document.all)
        oDiv.addEventListener("onmousemove",showit,false);
    else
        oDiv.attachEvent("onmousemove", showit);
}
}
</script>

Men for at få scriptet til at virke og ikke irritere sig selv... så skal jeg slippe af med den funktion som gør at den kun bliver aktiveret når "onmousemove" kan man ikke slette denne del af funktionen...?
Avatar billede olebole Juniormester
04. januar 2009 - 00:25 #9
Sådan bør koden nok se ud:

<script type="text/javascript">
function init() {
    var oDiv = document.getElementById("mark");
    if (oDiv.addEventListener)
        oDiv.addEventListener("mousemove",showit,false);
    else
        oDiv.attachEvent("onmousemove", showit);
}
</script>

Hvis ikke funktionen 'showit' skal kaldes, når musen bevæger sig over elementet, hvad skal der så ske - og hvornår?  =)
Avatar billede thomas_b Nybegynder
04. januar 2009 - 00:29 #10
Faktisk skal den hede:

<script type="text/javascript">
function init() {
    var oDiv = document.getElementById("mark");
    if (oDiv.addEventListener)
        oDiv.addEventListener("onmousedown",showit,false);
    else
        oDiv.attachEvent("onmousedown", showit);
}
</script>

Jeg kalder init() på f.eks. et billede således..: onmousedown="init()"

og den kan ikke finde ud af både onmousedown på billedet og onmousedown i scriptet... så vil jeg bare have den til at afvikle når der bliver trykket onmousedown på billedet... - er det okay forklaret :)
Avatar billede olebole Juniormester
04. januar 2009 - 00:40 #11
Hvis vi lige tager én ting ad gangen, så gentager jeg lige, at du aldrig skal bruge 'on' i addEventListener:
    oDiv.addEventListener("mousedown",showit,false);

- men:
    oDiv.attachEvent("onmousedown", showit);

Hvad din specifikke opgave angår, så er jeg stadig ikke helt med. Forstår jeg det korrekt, at du først vil kalde 'init' ved mousedown på billedet - og derefter kun kalde 'showit' på mousedown på billedet?
Avatar billede thomas_b Nybegynder
04. januar 2009 - 00:41 #12
Nej... showit skal afvikles når init bliver afviklet...
Avatar billede olebole Juniormester
04. januar 2009 - 00:46 #13
Du er nødt til at lægge et link  =)
Avatar billede thomas_b Nybegynder
04. januar 2009 - 00:51 #14
Prøver lige det sidste forsøg i at foklare det...

Vi er enige om at oDiv.attachEvent("onmousedown", showit); har en betingelse der hedder: "onmousedown"

Så vidt som jeg har forstået uden at vide det skal man bruge attachEvent-funktion for at trække en værdi ud af specielt opjekt i dette tilfæle: "document.getElementById("mark")" og showit

Jeg vil bare have betingelsen væk om hedder "onmousedown" - så den er betingelses-løs - og bare afvikles med det samme...
Avatar billede thomas_b Nybegynder
04. januar 2009 - 01:10 #15
Hvis det jalp... håber jeg.. :)
Avatar billede olebole Juniormester
04. januar 2009 - 01:18 #16
Undskyld, men jeg forstår slet ikke, hvad du mener  =)

ELEMENT.onclick = foo;

- her kaldes funktionen foo, når elementet klikkes. Skriver jeg derefter:

ELEMENT.onclick = bar;

- så kaldes funktionen bar, når elementet klikkes. Derimod er foo blevet overskrevet, så den kaldes ikke længere.

ELEMENT.attachEvent("onclick", foo);

- her kaldes foo, når elementet klikkes.

ELEMENT.attachEvent("onclick", bar);

- men nu kaldes både foo og bar, når elementet klikkes. Man tilknytter (attach) en event handler til elementet ... men man overskriver ikke andre
Avatar billede thomas_b Nybegynder
04. januar 2009 - 01:31 #17
Hehe... har fået bikset et eksempel frem...: http://xixi.dk/

X og Y skal localisere musen... med kordinater for den lyserøde firkant der kommer frem...
pga. den dobbel efekt med "onmousedown" så vil den have man trykker musen ned 2 gange uden at splippe.. det kan self ikke lade sig gøre...

men når man klikker på billedet skal den bare finde posistionen... og igen hvis man klikker igen et andet sted på billedet skal den tage den nye...
Avatar billede thomas_b Nybegynder
04. januar 2009 - 02:30 #18
ole...>

Jeg har fundet ud af en løsning på problemmet...

Jeg udskiftet bare onmousedown til onmousemove... tilsynladende virker det på den måde som jeg har ledt efter... :)

ellers finder jeg dig igen... og 1000 tak igen ;)
Avatar billede thomas_b Nybegynder
04. januar 2009 - 02:31 #19
Ops....

Lægger du lige et svar... :)
Avatar billede olebole Juniormester
04. januar 2009 - 22:25 #20
Selvtak  =)
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