Felix Riesterer: onclick elemente ausschliessen

Beitrag lesen

Lieber heinetz,

Gunnar hat Dir ja schon sehr hilfreiche Links gegeben, wenngleich Anfänger damit ein mittleres bis großes Verständnisproblem, und wenn nicht Verständnis-, so doch ein Umsetzungsproblem haben.

Im Grunde musst Du in Deiner durch das onclick-Event aufgerufenen Funktion prüfen, auf welches Element der Klick selbst ausgeführt wurde. Dazu gibt es im Event je mach Browser eine passende Eigenschaft:

function clickEventHandler (e) {  
    var clickElement = false; // zunächst von Fehler ausgehen  
  
    if (!e && window.event) e = window.event; // für IE das Event-Objekt holen  
  
    if (e.srcElement) clickElement = e.srcElement; // IE  
    if (e.target) clickElement = e.target; // W3C DOM  
  
    alert("Angeklicktes Element: " + clickElement);  
}  
  
myDiv.onclick = clickEventHandler;

Wie man oben sehen kann, wird in W3C-DOM-kompatiblen Browsern bei einem Event ein Parameter (siehe Variable "e") mitgegeben, der eine Referenz auf das (in diesem Fall "click"-)Event enthält. Für IE muss man sich eine Referenz über das window-Objekt holen. Und dann gibt es im IE die Eigenschaft "srcElement", in W3C-DOM-kompatiblen Browsern dafür "target", um das tatsächlich angeklickte Element zu ermitteln.

Du musst nun nur prüfen, ob das tatsächlich angeklickte Element ein <a>-Element ist, um in diesem Falle die weitere Ausführung Deiner Funktion abzubrechen (return true;).

function anzeigen (e) {  
    var el;  
  
    if (!e && window.event) e = window.event; // IE  
  
    if (e.srcElement) el = e.srcElement; // IE  
    if (e.target) el = e.target; // W3C DOM  
  
    if (el && el.tagName && el.tagName.toLowerCase() == "a")  
        return true; // <a> has been clicked!  
  
    doSomethingElse();  
  
    return true;  
}  
  
/* WICHTIG!!! Event-Parameter mitgeben! */  
rightsectionObj.onclick = function (e) { anzeigen(e); };  
// oder eleganter:  
rightsectionObj.onclick = anzeigen;

Noch Fragen?

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)