d3.js 使用默认值下拉选择

w9apscun  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(172)

创建多个下拉菜单时,如何在加载时设置选项selected
当页面完成加载时,第一个下拉列表应选择“Horse”,第二个下拉列表应选择“Cow”,第三个下拉列表应选择“Fox”。

let widgetContainer = d3.select('#dropdowns')
  let animalNames = ["Horse", "Dog", "Cow", "Fox", "Cat", "Pig", "Aardvark", "Baboon", "Elephant"]
  let selectedNames = ["Horse", "Cow", "Fox"]
  let dropdowns = widgetContainer
    .selectAll(".widget-select")
    .data(selectedNames)
    .join("select")
    .attr("id", (d, idx) => `select-${idx}`)
    .attr("class", "animal-select")
    .on("change", (animalName, idx, selectElements) => {
      let selectedValues = selectElements.map((elem) => elem.value);
      // function that sets state for graph and renders
      onAnimalSelect(selectedValues);
    });

  let options = dropdowns
    .selectAll("option")
    .data(animalNames)
    .join("option")
    .property("selected", (opt) => {
      // how to find the parent node to set selected?
    })
    .attr("value", (opt) => opt)
    .text((opt) => opt);

下面是一个JSF示例:https://jsfiddle.net/denisemauldin/x0znphky/3/

juzqafwq

juzqafwq1#

结合使用第二个和第三个参数可以得到DOM元素(在本例中为n[i]),然后使用parentNode可以从该元素向上找到其父元素。因此,它可以是:

.property("selected", (opt, i, n) => d3.select(n[i].parentNode).datum() === opt)

下面是更改后的代码:
第一个

相关问题