2013-06-02 88 views

回答

3

在你的功能裏,this是一個ElementW3C DOM API。所以這只是this.getAttribute("cy")

兩兩件事:你忘了return的值。由於屬性值是字符串,因此在添加另一個數字之前,您需要強制它們輸入數字。否則你的號碼將被強制轉換爲一個字符串,然後這兩個字符串將被並置:"10" + 2"102",而不是12

所以,像這樣:

circle.attr("cy", function() { 
    return +this.getAttribute("cy") + 10 * input_data.pitch; 
}); 

所有這一切說,它一般不地道D3拉回來的數據進行的DOM屬性。 (由於DOM屬性只能是字符串,因此速度很慢並且存在強制性和序列化問題。)因此,我建議您尋找一種基於數據的方法,並將自己限制爲數據驅動的文檔...而不是文檔驅動的數據!

+0

欣賞的意見,謝謝BDFL! –