追加函数中的动态返回值
Dynamic returned values in append function
我使用的是d3库,我想通过检查一些值来创建不同的元素。如果我这样做:
elements.append("rect").attr(...);
如果我想创建不同的元素,会发生什么?我试过了:
elements.append(function (d) {
if (d.foo) {
return "rect";
}
return "circle";
});
这似乎不起作用。
有什么替代方案?
.append()
接受一个返回要附加的DOM元素的函数。如下所示。
var data = ["circle", "rect"];
d3.select("svg").selectAll(".shape").data(data)
.enter()
.append(function(d) {
return document.createElementNS(d3.ns.prefix.svg, d);
});
当然,您还需要正确设置所有属性,这是该方法的关键——原则上,您不需要大量的if
/switch
语句来处理每个元素类型,但在实践中,您需要这样做,因为您需要设置的属性不同(除非您想为所有内容设置所有内容)。
在此处完成演示。
即使append
函数接受一个函数,我也不确定它应该如何工作(也许有人揭示了这一点)。然而,以下解决方案是可读的,易于实现:
elements.each(function (d) {
var el = d3.select(this);
var type = "circle";
if (el.foo) {
type = "rect";
}
var aType = el.append(type);
if (type === "rect") {
aType.attr("rx", 5)
.attr("ry", 5)
.attr("height", ...)
.attr("width", ...);
} else if (type === "circle") {
aType.attr("r", ...);
}
});
相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- HTML范围:动态设置值属性
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- 动态添加的输入元素不会在脚本中返回值
- 使用getElementByIdJavascript/PHP隐藏基于sql返回值的动态表
- 代码点火器动态表单下拉列表,不返回值,而是返回 ID
- 如何在javascript函数中动态加载jQuery,调用另一个函数,并返回该函数's的返回值
- 追加函数中的动态返回值
- 设置Meteor JS Helper的返回值,将其动态注入模板中
- jQuery动态id值在WordPress中返回UNDEFINED
- 如何处理php给出的多行动态返回值
- 如何在javascript中动态调用事件处理程序并获取其返回值