Повторенная функция-JS

Я создаю дерево с данными JSON. Основная идея: каждый узел div и каждый дочерний div тоже. Проблема заключается в том, когда я щелкаю дочерний div, при щелчке функция работает более 1. Как устранить эту проблему? Спасибо.
Edit: когда я пытаюсь определить onclick перед добавлением , проблема все еще продолжается.
Это моя функция сделать дерево.

function setTree(path){


   function Node(id) {
    this.id = id;
    this.children = {}; // object
}
   tree = new Node('root');

    path.forEach(function (a) {
    var parts = a.split('--->');
    parts.reduce(function (r, b) {
        if (!r.children[b]) {
            r.children[b] = new Node(b);
           createDiv(r.id,b);
        }
        return r.children[b];
    }, tree);
});
 document.getElementById('out').innerHTML = JSON.stringify(tree, 0, 4);
}

И это моя функция create div.

function createDiv(root,name)
    { alert("r ve b  " +root+"   " +name);
      var output = document.getElementById(root);

    if(!document.getElementById(name))
        {
            var ele = document.createElement("div");
            ele.setAttribute("id",name);                  
            ele.setAttribute("class","impact");
            ele.innerHTML="<a><img src='../resources/images/plusIcon.png' border=0 /></a>" + name; //a onclick='clickIcon()'
            output.appendChild(ele);
          ele.onclick = function() {divClick();};
        }
    }

EDIT: решение:

 ele.onclick = function(e){
                 e.stopPropagation();
                 divClick(ele.id);
          };};

1 ответ

  1. Вы divраспределяете элементы по слоям, и у каждого из них есть onclickсобытия, поэтому вы будете вызывать divClick()один раз для каждого divв дереве. В этом ответе показано, как обрабатывать только самое верхнее divсобытие.