2016-09-22 68 views
0

我正在使用d3 v4並嘗試將樣式應用於mouseover上的元素。 我想知道,如果它與V4的API的變化,但我似乎無法獲得在節點在mouseover上更改d3類

我有代碼:

.on('mouseover',() => { 
    let self = d3.select(this); 
    let c = self.attr('class'); 

但是這給出了一個錯誤

Cannot read property 'getAttribute' of null 

所以d3.select()似乎沒有工作... 然而,mouseover IS射擊。

我可以使用

.on('mouseover', (elem) => { 
    console.log('elem', elem); 

哪位能給我一些類型D3的對象,而不是一個DOM節點。 我不能使用這個對象

elem.classed("hilite", true); 
    elem.attr("class", "hilite"); 

無論這些方法存在於D3返回的對象上的任何D3的方法。

那麼我該如何在d3中做這個超級基本操作?

相關 Change class of one element when hover over another element d3

+0

如果這是打字稿,請您提供它所產生的(或者一個小提琴)的JavaScript代碼? d3.select應該工作正常:https://jsfiddle.net/hjt5rxbx/ – Nixie

+0

你能爲此做一個小提琴嗎? –

+0

不需要小提琴,這只是在胖箭頭功能中的「this」的含義。 –

回答

-1

您可以使用箭頭功能(如果這個箭頭的功能),如果你不需要當前元素的this訪問。在這種情況下,您確實需要,因爲D3調用事件處理程序將this設置爲觸發此事件的元素。

參見:Using arrow functions with d3