Linuchs: danke

Beitrag lesen

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