Linuchs: Event nicht weiterreichen stopPropagation

Beitrag lesen

Moin,

habe am Smartphone festgestellt, dass ein Menü, welches durch CSS hover aufgeklappt werden soll, nicht angezeigt wird.

Also muss man drauftippen, was dem onclick entspricht. Das funktioniert zunächst, es klappt auf.

Doch wie wieder zuklappen? Ich tippe (oder klicke) auf das per display:block geöffete ul und bekomme den Javascript-Fehler TypeError: obj.childnodes is undefined

Die Funktion toggleDisplay wird zweimal aufgerufen. Einmal wie gewünscht für das UL, dann aber nochmal für dessen untergeordnetes LI, was zum Fehler führt, weil dieses LI kein child hat.

Also möchte ich das onclick Event stoppen. Das gelingt mir nicht.

function toggleDisplay(obj) {
// fuer handheld
alert ( obj.tagName );
  if ( obj.tagName == "LI" ) {
    obj.childnodes[0].style.display = "block"; // child-UL ausklappen
  } else {
    obj.style.display = "none"; // diese UL einklappen
  }
  if ( obj.stopPropagation ) obj.stopPropagation()
  else obj.cancelBubble = true; // click nicht weiterreichen
}
  <ul class="em08 klapp_left">
    <li onclick="toggleDisplay(this)"><img class=ic_kl src="img/###sprache_de.gif###sprache_en.gif###sprache_nl.gif###sprache_nds.png###"
    title="###deutsch###english###Nederlands###plattdüütsch###" />
    <ul onclick="toggleDisplay(this)">
      <li><a href="?lg=de">deutsch</a></li>
      <li><a href="?lg=en">english</a></li>
      <li><a href="?lg=nl">Nederlands</a></li>
    </ul>
    </li>
  </ul>

Wie stoppe ich das Durchreichen des onclick Events?

Linuchs