csshunter
Meubilair
- Lid geworden
- 4 aug 2009
- Berichten
- 6.465
Beste mensen,
Het streven is om een mouseover-event aan een link te koppelen, waarbij er een variabele aan de mouseover-functie wordt meegegeven.
Zou toch redelijk veelvoorkomend en eenvoudig moeten zijn, zou je zeggen.
Onder uitgebreid lurken aan koffie en de compatibility-tables van quirksmode.org ("Attributes: a bloody mess.") heb ik o.a. het volgende getest.
Fase 1: setAttribute
Dat was:
[JS]...
links.setAttribute('onmouseover','maakRood('+i+')');
...[/JS]
Werkt prima in Firefox, Chrome, ... maar ja: Internet Explorer 7 doet het niet.
Fase 2: createAttribute plus setAttributeNode
Dat was:
[JS]...
z = document.createAttribute('onmouseover');
z.value = 'maakRood('+i+')';
links.setAttributeNode(z);
...
[/JS]
Werkt prima in Firefox, Chrome, ... maar ja: bekende verhaal.
Fase 3: addEventListener plus attachEvent
Hieraan zal toch ook IE7 moeten gehoorzamen.
Dat gaat in principe zo:
[JS]function addEventSimple(obj,evt,fn) {
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on'+evt,fn);
}[/JS]
Maar ... zo kan je niet rechtstreeks een parameter meegeven aan de functie.
Daarvoor moet op een of andere manier een extra functie als tussenstap ingemonteerd worden.
En hier loop ik stuk. Ik kwam bv. tegen:
[JS]someObj.addEventListener("click",
function(){
var newVar = someVar;
some_function(someVar);
},
false);[/JS]
En vele andere Google-suggesties. Maar die krijg ik niet aan de praat, ondanks tig uitgeprobeerde varianten met en zonder enkele en/of dubbele aanhalingstekens en/of escape-slashes.
Dus de vraag:
Weet iemand toevallig uit zijn blote hoofd de oplossing, of een online-pagina met (ook in IE7) werkende demo voor het meegeven van zo'n parameter aan een EventListener?
Mijn dank zal met geen pen te beschrijven zijn.
Met vriendelijke groet,
CSShunter
______
PS: Volgens de boekjes moet IE>7 het wel doen op de twee eerste manieren. IE7 laten vallen is echter voor mij geen optie. Dwz wel een optie, maar niet goedgekeurd!
PS-2: In bovenstaande voorbeelden lijkt het misschien alsof ik met een koe een olifant wil vangen: een kleurwisseling bij een mouseover kan natuurlijk veel simpeler en doeltreffender met een css-hover gedaan worden. Maar als het goed gaat, wordt een vergelijkbaar stukje script onderdeel van een groter script, waarin heel andere dingen moeten gebeuren. Vandaar.
Het streven is om een mouseover-event aan een link te koppelen, waarbij er een variabele aan de mouseover-functie wordt meegegeven.
Zou toch redelijk veelvoorkomend en eenvoudig moeten zijn, zou je zeggen.
Onder uitgebreid lurken aan koffie en de compatibility-tables van quirksmode.org ("Attributes: a bloody mess.") heb ik o.a. het volgende getest.
Fase 1: setAttribute
Dat was:
[JS]...
links.setAttribute('onmouseover','maakRood('+i+')');
...[/JS]
Werkt prima in Firefox, Chrome, ... maar ja: Internet Explorer 7 doet het niet.

Fase 2: createAttribute plus setAttributeNode
Dat was:
[JS]...
z = document.createAttribute('onmouseover');
z.value = 'maakRood('+i+')';
links.setAttributeNode(z);
...
[/JS]
Werkt prima in Firefox, Chrome, ... maar ja: bekende verhaal.

Fase 3: addEventListener plus attachEvent
Hieraan zal toch ook IE7 moeten gehoorzamen.
Dat gaat in principe zo:
[JS]function addEventSimple(obj,evt,fn) {
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on'+evt,fn);
}[/JS]
Maar ... zo kan je niet rechtstreeks een parameter meegeven aan de functie.
Daarvoor moet op een of andere manier een extra functie als tussenstap ingemonteerd worden.
En hier loop ik stuk. Ik kwam bv. tegen:
[JS]someObj.addEventListener("click",
function(){
var newVar = someVar;
some_function(someVar);
},
false);[/JS]
En vele andere Google-suggesties. Maar die krijg ik niet aan de praat, ondanks tig uitgeprobeerde varianten met en zonder enkele en/of dubbele aanhalingstekens en/of escape-slashes.
Dus de vraag:
Weet iemand toevallig uit zijn blote hoofd de oplossing, of een online-pagina met (ook in IE7) werkende demo voor het meegeven van zo'n parameter aan een EventListener?
Mijn dank zal met geen pen te beschrijven zijn.

Met vriendelijke groet,
CSShunter
______
PS: Volgens de boekjes moet IE>7 het wel doen op de twee eerste manieren. IE7 laten vallen is echter voor mij geen optie. Dwz wel een optie, maar niet goedgekeurd!

PS-2: In bovenstaande voorbeelden lijkt het misschien alsof ik met een koe een olifant wil vangen: een kleurwisseling bij een mouseover kan natuurlijk veel simpeler en doeltreffender met een css-hover gedaan worden. Maar als het goed gaat, wordt een vergelijkbaar stukje script onderdeel van een groter script, waarin heel andere dingen moeten gebeuren. Vandaar.