onclick, onmouseover nachträglich hinzufügen
Alex Wilde
- javascript
0 XaraX0 Alex Wilde0 peterS.
0 Struppi
Hallo,
ich möchte einem Element nachträglich noch ein onclick und onmouseover Ereignis für einen Tooltip hinzufügen. Dabei sollen die alten Ereignis bestehen bleiben. Mit element.onclick += function() { ... } haut das ganze leider nicht hin.
Ich denke mal, sowas müßte schon einmal gelöst worden sein, ich kann aber leider nichts lösendes dazu finden. Hat von Euch jmd. eine Idee?
Danke
Alex
Hallo Alex,
probiere es bitte so: element.onclick=function(){alte_Funktion();neune_Funktion()}
Gruß aus Berlin!
eddi
probiere es bitte so: element.onclick=function(){alte_Funktion();neune_Funktion()}
also ich habe ein wenig herumprobiert und denke dass dieser Lösungsansatz nicht funktioniert oder sehr umständlich werden kann. Das Problem liegt darin, die "alte Funktion" des onClick Ereignisses auszulesen bzw. in die neue Kombination einzubinden... es sind keine Strings also kann ich nicht mit RegExps arbeiten und ansonsten kenne ich keine Wege einen neuen onClick zu generieren.
Gruß aus Berlin!
eddi
ebenfalls Grüße aus Berlin
gruss Alex,
... Das Problem liegt darin, die "alte Funktion" des onClick Ereignisses
auszulesen bzw. in die neue Kombination einzubinden...
Struppi hat sich dazu ja schon geaeussert -
https://forum.selfhtml.org/?t=95368&m=578477
ansonsten kenne ich keine Wege einen neuen onClick zu generieren.
in den zur zeit gaengigsten browsern stehen Dir dafuer die methoden
"addEventListener" (z.b.: mozillas) bzw. "attachEvent" (msie,opera)
zur verfuegung - aufklaerung erfolgt anhand eines arbeitsbeispiels:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
<html>
<head>
<title>addEventListener.html</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript">
function linkOver(linkObj) {
window.top.status = "mouseover: " + ((linkObj.text) ? (linkObj.text) : ((linkObj.innerText) ? (linkObj.innerText) : (linkObj)));
return true;
}
function linkOut(linkObj) {
window.top.status = "mouseout: " + ((linkObj.text) ? (linkObj.text) : ((linkObj.innerText) ? (linkObj.innerText) : (linkObj)));
return true;
}
function linkClick(linkObj) {
alert("click: " + ((linkObj.text) ? (linkObj.text) : ((linkObj.innerText) ? (linkObj.innerText) : (linkObj))));
return false;
}
function additionalLinkClick() {
alert("document.links.length = " + document.links.length);
}
var addClickEvents;
if (window.attachEvent) { // msie, opera;
alert("window.attachEvent");
addClickEvents = function() {
for (var i=0; i<document.links.length; ++i) {
document.links[i].attachEvent("onclick",additionalLinkClick);
}
};
window.attachEvent("onload",addClickEvents);
} else if (window.addEventListener) { // mozilla;
alert("window.addEventListener");
addClickEvents = function() {
for (var i=0; i<document.links.length; ++i) {
document.links[i].addEventListener("click",additionalLinkClick,true);
}
};
window.addEventListener("load",addClickEvents,true);
}
</script>
</head>
<body>
<p>
<a href="#" onmouseover="return linkOver(this)" onmouseout="return linkOut(this)" onclick="return linkClick(this)">link 01</a><br>
<a href="#" onmouseover="return linkOver(this)" onmouseout="return linkOut(this)" onclick="return linkClick(this)">link 02</a><br>
<a href="#" onmouseover="return linkOver(this)" onmouseout="return linkOut(this)" onclick="return linkClick(this)">link 03</a><br>
</p>
</body>
</html>
by(t)e by(t)e - peterS. - pseliger@gmx.net
ich möchte einem Element nachträglich noch ein onclick und onmouseover Ereignis für einen Tooltip hinzufügen. Dabei sollen die alten Ereignis bestehen bleiben. Mit element.onclick += function() { ... } haut das ganze leider nicht hin.
onclick erwartet "eine" Referenz auf eine Funktion, es ist kein string.
Du kannst diese aber evtl. auslesen:
var old_func = element.onclick;
element.onclick = function()
{
deine_neue_funktion();
if(old_func) old_func();
};
Struppi.