cindy17: Menüpunkte..

ich hab in der schule ein Projekt und erstelle eine Website..

ich habe mit einem Javascript di eNavigationsleiste definiert:

<script type="text/javascript">

function treeMenu_init(menu, data) {
    var array = new Array(0);
    if(data != null && data != "") {
      array = data.match(/\d+/g);
    }
    var items = menu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
      items[i].onclick = treeMenu_handleClick;
      if(!treeMenu_contains(treeMenu_getClasses(items[i]), "treeMenu_opened")
          && items[i].getElementsByTagName("ul").length
            + items[i].getElementsByTagName("ol").length > 0) {
        var classes = treeMenu_getClasses(items[i]);
        if(array.length > 0 && array[0] == i) {
          classes.push("treeMenu_opened")
        }
        else {
          classes.push("treeMenu_closed")
        }
        items[i].className = classes.join(" ");
        if(array.length > 0 && array[0] == i) {
          array.shift();
        }
      }
    }
  }

function treeMenu_handleClick(event) {
    if(event == null) { //Workaround für die fehlenden DOM Eigenschaften im IE
      event = window.event;
      event.currentTarget = event.srcElement;
      while(event.currentTarget.nodeName.toLowerCase() != "li") {
        event.currentTarget = event.currentTarget.parentNode;
      }
      event.cancelBubble = true;
    }
    else {
      event.stopPropagation();
    }
    var array = treeMenu_getClasses(event.currentTarget);
    for(var i = 0; i < array.length; i++) {
      if(array[i] == "treeMenu_closed") {
        array[i] = "treeMenu_opened";
      }
      else if(array[i] == "treeMenu_opened") {
        array[i] = "treeMenu_closed"
      }
    }
    event.currentTarget.className = array.join(" ");
  }

function treeMenu_getClasses(element) {
    if(element.className) {
      return element.className.match(/[^ \t\n\r]+/g);
    }
    else {
      return new Array(0);
    }
  }

function treeMenu_contains(array, element) {
    for(var i = 0; i < array.length; i++) {
      if(array[i] == element) {
        return true;
      }
    }
    return false;
  }

function treeMenu_store(menu) {
    var result = new Array();;
    var items = menu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
      if(treeMenu_contains(treeMenu_getClasses(items[i]), "treeMenu_opened")) {
        result.push(i);
      }
    }
    return result.join(" ");
  }
</script>
<style type="text/css">
  li.treeMenu_opened ul {
    display: block;
  }
  li.treeMenu_closed ul {
    display: none;
  }
</style>

nun ist mir aufgefallen das wenn ich auf einen Menüoberpunkt raufklicke die unterpunkte kommen .. das ist ja so gewollt .. aber wenn ich dann auf einen unterpunkt drücke schließt sich das untermenü wieder und das find ich echtätzend weil man dann immer wieder auf den Menüoberpunkt klicken muss..
meine frage ist jetzt wie ich es verhindern kann das das menü immer wieder zuklappt , ich möchte nähmlich das es offen bleibt..

ich freu mich auf eure Hilfe :D..

Danke..

  1. Hallo!

    else if(array[i] == "treeMenu_opened") {
            array[i] = "treeMenu_closed"
          }

    Ich vermute einmal, dass Du das JavaScript nicht komplett selbst geschrieben hast, denn sonst würdest Du festgestellt haben, dass genau dieser Codeteil dafür zuständig ist, das Menü beim Klick zu schließen, wenn es bereits offen ist - kommentiere ihn einfach mal aus und teste es erneut.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.