我試圖修改每秒更新線圖的代碼。D3.js將變量傳遞到函數
該函數接受一個名爲path的變量,並使用它在屏幕上製作一個動畫,就像線圖正在移動一樣。
這是一段代碼片段。 (整個代碼,工作示例,並引用在此問題的最後聯繫。)
var path = svg.append("g")
.attr("clip-path", "url(#clip)")
.append("path")
.datum(data)
.attr("class", "line")
.attr("d", line);
tick();
function tick() {
// push a new data point onto the back
data.push(random());
// redraw the line, and slide it to the left
path
.attr("d", line)
.attr("transform", null)
.transition()
.duration(500)
.ease("linear")
.attr("transform", "translate(" + x(-1) + ",0)")
.each("end", tick);
// pop the old data point off the front
data.shift();
}
我所試圖做的是改變了功能,因此,它需要的路徑變量作爲自變量,從而使我可以使用相同的功能(滴答)來修改各種不同的路徑。
但是,當我改變了上面的代碼是這樣的:
tick(path);
function tick(path) { /*same as before*/ }
我得到的類型錯誤path.attr是不是一個函數。
而且,如果不是,我嘗試做這樣的事情:
tick(d3.select(path));
function tick(path) { /*same as before*/ }
我得到的錯誤:無法讀取的未定義的屬性「長度」。
有人可以幫我嗎?
工作實施例:向下滾動到第二曲線:http://bost.ocks.org/mike/path/
引爲代碼,例如:mbostock在Github
感謝您關注此事並提供更好的解決方案! – codersun3