javascript - 如何设置出现在下拉列表中的默认值?
问题描述
我已经看到了这个答案,它说要这样做:
.property("selected", function(d){ return d === defaultOptionName; })
但这对我不起作用。我正在尝试创建一个简单的下拉菜单并创建一个默认值作为最初出现在下拉菜单上的文本。这就是我正在做的事情:
var dropdown = d3.select("#dropDown")
.insert("select", "svg")
.attr('id', 'dropDownId')
.on("change", dropdownChange);
dropdown.selectAll("option")
.data(cols)
.enter().append("option")
.attr("value", function (d) { return d; })
.text(function (d) {
return d;
});
dropdown.property("selected", "some default value");
由于某些原因,cols 中的第一个值仍然显示。我怎样才能实现我的目标?
解决方案
当你这样做...
dropdown.property("selected", "some default value");
...你必须问自己:什么是dropdown
?这是D3的选择,这很清楚,但是选择什么?
让我们来看看:
var dropdown = d3.select("#dropDown")
.insert("select", "svg")
//etc...
因此,dropdown
指的是<select>
,而不是选项。
最重要的是,您无法设置...
dropdown.property("selected", "some default value");
该selected
属性是给定选项的布尔值。
解决方案:为 s 创建一个新选择<option>
:
var options = dropdown.selectAll("option")
.data(cols)
.enter()
//etc...
接着:
options.property("selected", function(d){
return d === "some default value");
});
将在哪里d === "some default value"
返回true
或false
为每个数据。
或者,您不需要命名选择(但这样做是个好主意),只需将该方法添加到链中即可。
这是一个演示:
var cols = ["foo", "bar", "baz", "foobar", "foobaz"]
var dropdown = d3.select("body")
.append("select")
.attr('id', 'dropDownId');
var options = dropdown.selectAll("option")
.data(cols)
.enter()
.append("option")
.attr("value", function(d) {
return d;
})
.text(function(d) {
return d;
});
options.property("selected", function(d){return d === "foobar"});
<script src="https://d3js.org/d3.v5.min.js"></script>
推荐阅读
- python - 操作 python 列表时如何将字符串保持在一起?
- javascript - 如何在 Javascript 中重用函数链?
- python - 根据条件更改张量流张量的值
- react-native-android - 如何修复(安全异常:Permission Denial:starting Intent)
- r - How to convert header into data raw in R?
- java - 没有调用paintComponent
- python-3.x - 自动调整单元格宽度
- c# - 每次用户选择日期时,如何在 DateTimePicker 中设置默认小时?
- python-3.x - 在旋转网格上使用 matplotlib 的 quiver
- python - List of string "integers" to integers accounting for "non-numeric" strings Python