gruss Anja,
oh, wow, seid Ihr schnell! Danke, Cheatah und wahsaga, ich werde mir
mal die angegebenen Quellen zu Gemüte führen.
dies ist zur loesung Deines problems aber nicht unbedingt notwendig.
sowohl die JavaScript- als auch die DOM-API stellen Dir robuste
werkzeuge zur verfuegung.
Deinem beispiel mangelt es eigentlich nur an der w3c-DOM-methode
[addEventListener] bzw. derem microsoftschen pendant [attachEvent]
sowie einer event-auswertung innerhalb der den links hinzuzufuegenden
methode.
wenn Du Dich jetzt noch einiger array-iteratoren bedientest, kaeme
die kernfunktion zur loesung Deines problems auf gerademal 18 Zeilen
code in einer eleganten aussagekraeftigen schreibweise.
das folgende bsp. dient zur bekraeftigung des gerade gesagten - der
letzte code-block registriert die hauptfunktion "addOnclickListener"
auf den "onload"-event des [window]-objekts. "addOnclickListener"
wiederum registriert auf allen links, deren target-attribut-wert
gleich "_top" ist den von Dir frei zu gestaltenden "oncklick"-
eventhandler "onclickHandler".
die ersten beiden Array-methoden stellen in allen browsern, die
vefuegbarkeit der statischen methode [Array.filter] sowie die der
array-methode [forEach] sicher - ACHTUNG CODE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>addOnclickListener.html</title>
<meta http-equiv="content-script-type" content="text/javascript">
<!--
fuer alle browser, die folgend verlinkte methoden (noch) nicht implementieren -
[link:http://developer.mozilla.org/en/docs/New_in_JavaScript_1.6#Array_extras]
bietet sich - ebenfalls verlinkt - hier eine der moeglichen alternativen an:
[link:http://www.pseliger.de/jsExtendedApi/jsApi.bundles.DOM.getters.js]
//--><!--
<script type="text/javascript" src="...[path].../jsApi.bundles.DOM.getters.js">//-->
<script type="text/javascript">
~~~~~~javascript
if (typeof Array.prototype.forEach != "function") {
Array.prototype.forEach = function (fct, thisArr) {
if (typeof fct == "function") {
thisArr = ((thisArr && (typeof thisArr == "object") && (thisArr instanceof Array)) ? (thisArr) : (null));
var i, l = this.length;
for (i=0; i<l; ++i) {
fct.call(thisArr, this[i], i, this);
}
}
};
}
Array.filter = function (obj, fct) {
var arr = [];
if (typeof fct == "function") {
var i, l = (((obj instanceof Array) || ((typeof obj.length == "number") && ((typeof obj.item == "function") || (typeof obj.item == "object") || (typeof obj.item == "string") || (obj instanceof window.NodeList) || (obj instanceof window.HTMLCollection)))) ? (obj.length) : (0));
for (i=0; i<l; ++i) {
if (fct.call(null, (obj[i] || obj.item(i)), i, obj)) {
arr.push(obj[i] || obj.item(i));
}
}
}
return arr;
};
var onclickHandler = function (evtObj) {
evtObj = (window.event || evtObj); // [MouseEvent]
var evtSrc = (evtObj.srcElement || evtObj.target); // [HTMLLinkElement]
alert("evtSrc - this object : " + evtSrc + "\nevtSrc.nodeName : " + evtSrc.nodeName + "\nevtSrc.id : " + evtSrc.id + "\n\nevtSrc.onclick: " + evtSrc.onclick);
};
var addOnclickListener = function () {
if (addOnclickListener.isInitialized) {return;} // check due to opera;
addOnclickListener.isInitialized = true;
Array.filter(document.links, (function (elm/*, idx, arr*/) {
return (elm.target == "_top");
})).forEach(function (elm/*, idx, arr*/) {
if (elm.addEventListener) {
elm.addEventListener("click", onclickHandler, false); // [false]-flag due to opera;
} else if (elm.attachEvent) {
elm.attachEvent("onclick", onclickHandler);
}
});
};
if (window.addEventListener) {
window.addEventListener("load", addOnclickListener, true);
} else if (window.attachEvent) {
window.attachEvent("onload", addOnclickListener);
}
~~~~~~html
</script>
</head>
<body>
<ul>
<li><a href="#" target="_top" id="hubi1" onclick="this.id = 'gnn'; alert(this.id);">_top und JS</a></li>
<li><a href="#" target="_top" id="hubi2">_top</a></li>
<li><a href="#" target="_blank" id="hubi3">blank</a></li>
</ul>
</body>
</html>
so long - peterS. - pseliger@gmx.net
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]