Hallo Mathias,
event.stopPropagation() ist dein Freund. Wikiartikel
Das klappt prima. Da setze ich dann auch gleich das Klick-Event für die Färbung des Hintergrunds:
// wenn DOM geladen ...
window.addEventListener('DOMContentLoaded', function ( ) {
// Positionen per Klick einfaerben
obj_position = document.getElementsByClassName( "position" );
for ( i=0; i<obj_position.length; i++ ) {
obj_position[i].addEventListener('click', function () {
switchMarkierung(this);
});
}
// Klick auf <a ... nicht wieterreichen
obj_href = document.getElementsByTagName( "a" );
for ( i=0; i<obj_href.length; i++ ) {
obj_href[i].addEventListener('click', function (event) {
event.stopPropagation();
});
}
});
Aber warum kann ich die Funktion switchMarkierung nicht direkt einhängen? Dies geht nicht, offenbar wird this nicht oder nicht richtig an die Funktion übergeben:
obj_position[i].addEventListener('click', switchMarkierung(this) );
Fehler: TypeError: zeile.className is undefined in standard.js:21:0
function switchMarkierung( zeile )
{
// Toggle Hintergrund
if ( zeile.className.indexOf( "bgmarkiert" ) == (-1) ) {
[21] zeile.className = zeile.className +" bgmarkiert"; // Markierung setzen
markierte_positionen++;
} else {
zeile.className = zeile.className.replace( " bgmarkiert", "" ).replace( "bgmarkiert", "" ); // Markierung entfernen
markierte_positionen--;
}
Linuchs