我正在嘗試向圖中的酒吧添加事件。我嘗試了這個function
波紋管,但是使用這個功能它並不重要我點擊的是什麼,它總是會返回array
中的最後一個key
。D3 - 將事件添加到酒吧
我的猜測是這與異步有關,因爲它返回最後的key
值。
for (var key in data) {
bar = bars.append('rect')
.attr('class', 'bar')
.attr('x', (dimensions.width/data.length) * currentId + 41)
.attr('y', 100 - data[key] + 10).attr('height', data[key])
.attr('width', dimensions.width/data.length)
.attr('fill', '#4682B4')
.on('click', (bar = key) => {
console.log(key) //Always returns the same key
});
currentId++;
}
我也試圖複製該數組包含的關鍵之一,並作出if語句是這樣的:
console.log(key === 1 ? true : false);
這將返回true
和false
,正是因爲它應該。我認爲這與async
有關的另一個原因。
我的根本問題是; 我怎樣才能讓這條上的點擊事件,這將返回正確的key
難道你也許提供一個鏈接到聲明的來源「作爲一般規則,當你寫一個D3鱈魚e,你通常不需要任何形式的循環。「? – FlorisdG
該聲明的來源是我的專業經驗和任何經驗豐富的D3編碼器的經驗。你可以在任何關於D3的教程,書籍或文檔中看到它。這個由D3創建者Mike Bostock編寫的頁面是一個很好的起點:https://bost.ocks.org/mike/join/ –
正如他所說,*「...在你開始一個** for循環之前* *並蠻力,從D3的一個例子考慮這個神祕的序列......「* –