我的问题类似于这里提出的一个问题:storing user input in array
我的用例在一个关键方面是不同的,--我没有静态输入。在任何时候,我的页面上都可能有1到3个用户的输入。它们也会被动态删除,所以我不能只创建它们,然后根据需要对它们进行样式设置,比如使用display:hidden;。
,我的问题是:是一个js解决方案,它可以将用户输入存储到一个对输入健壮的数组中,如果元素还没有被附加(!==null)的话,如果元素还没有追加,那么这些输入可能或者可能没有为每个数组添加一个if子句。
如果或有一种比原生javascript更简单的方法将数字输入存储到数组中,那么这也是一个可以接受的答案。我假设了这个选择:d3.selectAll('#input1,#input2,#input3'),但我不确定是否可以从这样的选择中检索值并将其存储在数组中。
下面是一个经过改进的示例:
文档可能有3个输入,但假设文档的当前状态只有2个ID输入:#input1和#input2。因此,我需要存储现有输入的值,以及#input3的0,因为它还没有创建。我不知道如何用这些需求创建数组理解。我在想:
my_array.push(d3.selectAll('#input1,#input2,#input3').each().value())但正如我前面所说的,我希望数组包含每个输入的值。push()只需将另一项添加到数组中。如果事件侦听器被触发超过3次,则数组将超过3个值,这不是我想要的。我只想要一个数组,该数组使用所有现有数字输入的当前值进行更新(如果尚未附加输入,则值为0)。
发布于 2017-04-15 07:55:18
你的问题不太清楚,但在我看来,你似乎想得到输入的所有值,而不知道页面上有多少输入。
如果是这样的话,你可以简单地使用..。
d3.selectAll("input[type=number]").,它将在调用函数时获取页面上的所有输入。
下面是一个演示,请看控制台:
d3.select("button").on("click", function() {
var inputs = [];
d3.selectAll("input[type=number]").each(function() {
inputs.push(this.value);
})
console.log(inputs);
})<script src="https://d3js.org/d3.v4.min.js"></script>
<div id="form">
<h1><b>Please enter data</b></h1>
<hr size="3" />
<br>
<label for="input 1">Input 1</label>
<input id="input1" type="number">
<br>
<label for="input 2">Input 2</label>
<input id="input2" type="number">
<br>
<label for="input 3">Input 3</label>
<input id="input3" type="text">
<br>
<hr>
</div>
<button>Submit</button>
https://stackoverflow.com/questions/43422962
复制相似问题