2015-11-08 115 views
1

試圖訪問一個節點的父在D3樹佈局我的代碼看起來像這樣Uncaught TypeError:n.apply不是函數 - 可能是什麼問題?

這是應該顯示它接受作爲參數

function draw(a){ 
    console.log(a); 

    } 

這裏母公司名稱的功能是功能將其稱爲節點的鼠標懸停事件,請參閱最後一行

node.append("circle") 
    .attr("class", function (d) { 
     var value; 
     if(d.depth == 1){value = "marker";} 
     else{value = "else";} 
     return value;} 
    ) 
    .attr("r", function(d){return d.depth == 1?d.children.length:3}) 
    .style("fill", function (d) { 
     return d.depth>1?colors(d.parent.name):colors(d.name);}) 
    .style("stroke", "none") 
    .on("mouseover", "draw(function(d){return d.parent.name;})"); 

但是,我得到上述錯誤。任何接受者?

+1

行情?? '.on(「mouseover」,「draw(function(d){return d.parent.name;})」);'??? – Tushar

+0

沒有得到你爲什麼要在繪圖函數(函數(d){return d.parent.name;})中寫一個函數有沒有一個很好的理由... – Cyril

+0

對不起,不知道你的意思。到目前爲止,在d3中它是如何訪問當前元素的,請參閱我設置circle類屬性的第一個括號 – user2964988

回答

2

它看起來像一個問題,你"mouseover"處理程序。您傳遞的是一個字符串而不是函數,該函數僅在onmouseover DOM元素屬性中起作用(並且即使在這種情況下也存在混淆行爲的不良做法)。試試

on("mouseover", function (d) { 
    draw(d.parent.name); 
}); 
+0

這個工程,實際上已經嘗試過,但我現在意識到,我並沒有終止線路後,繪製調用 – user2964988

0

你會想要做這樣的事情:

.on("mouseover", function(d) { 
    draw(d.parent.name); 
}); 
+0

我認爲'd'是作爲參數傳遞給''mouseover「'處理程序的數據,而不是全球 –

相關問題