2016-05-26 5 views
0

JSONデータでツリーを作成します。主なアイデア:すべてのノードはdivとすべての子divも。問題は、私が子divをクリックすると、クリック機能が1以上働くことです。どうすればこの問題を解決できますか?ありがとう。 編集:追加する前にonclickを定義しようとすると、まだ問題が続きます。 これは私のツリー作成機能です。リピート機能-JS

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); 
} 

これは私の作成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); 
      };}; 

答えて

0

あなたのdiv要素を積層していて、それらは各々がonclickイベントを持っているので、あなたは、ツリー内の各divに一度divClick()を呼ぶことにします。最上位のdivイベントのみを処理する方法については、this answerを参照してください。

+0

私は機能のための別のパラメータがありますか? e.stopPropagation()で機能テスト(e、parameter2)が機能していますか? –

+0

ele.onclick = function(e){ e.stopPropagation(); divClick(ele.id); };};仕事があります。ありがとう。 –