Hallo zusammen,
für den dämlichen Titel entschuldige ich mich zu Anfang, besser kann ich mein "Problem" nicht umschreiben.
Folgendes: um eine Reihe Grafiken sind Verweise gelegt. Mittels eventHandlern soll den Verweisen (nicht den Grafiken) ein Verhalten angedeiht werden. Klappt soweit ganz gut. Allein: lese ich in der den Event abfangenden Funktion id und className des angeklickten Verweises aus, gibt mir das Skript nicht id/className des Verweises aus, sondern die der eingeschlossenen Grafik. Dies geschieht in allen Browsern die ich hier zur Verfügung (FF3, Opera9, Konquerer4) habe gleich gut/schlecht (IEx kann ich hier nicht testen, schließe von der hohen Reproduktionsrate in den angegebenen Browsern darauf, dass auch der Murks (?) ausgeben wird). Und da frage ich mich: Wieso denn bloß? Steht in den Verweisen simpler Text bekomme ich was ich von dem Skript will; meine: id/className.
Zur Veranschaulichung, Code-Beispiel:
javascript:
test = {
addEvent : function (obj, key, func) {
for (var i=0, l=obj.length; i<l; i++) {
var tmp_elem = obj[i];
var is_key = tmp_elem.className.indexOf(key);
if (is_key == 0) {
tmp_elem.onclick = func;
}
else continue;
};
return true
},
init : function () {
window.onload = function () {
var links = document.getElementsByTagName("a");
var isAdded = test.addEvent(links, "link", test.say);
};
},
say : function (event) {
var ID = event.target.id;
var CL = event.target.className;
alert("ID: "+ID+"\nclassName: "+CL);
}
};
test.init();
html:
<ul>
<li><a href="#" class="link" id="ilink_1"><img src="bla.png" class="img" id="img_1"></a></li>
<li><a href="#" class="link" id="ilink_2"><img src="bla.png" class="img" id="img_2"></a></li>
<li><a href="#" class="link" id="ilink_3"><img src="bla.png" class="img" id="img_3"></a></li>
<li><a href="#" class="link" id="llink_1">blablabla</a></li>
<li><a href="#" class="link" id="llink_2">blablabla</a></li>
<li><a href="#" class="link" id="llink_3">blablabla</a></li>
</ul>
Um ehrlich zu sein: eigentlich ist das Problem schon gelöst. Ersetzt man event.target durch event.currentTarget bekommt man genau das, was man will. An die Lösung gelang ich allerdings mittels Trial&Error und hat mit der Durchdrungenheit des Problems nichts zu tun. Wäre deshalb für Hinweise trotzdem dankbar.
Gruß
p_d