基于关键字查找特定元素并推送至数组

finding a specific element based on keyword and push to array

本文关键字:数组 元素 关键字 查找      更新时间:2023-09-26

我正在尝试查找所有输入元素,并根据元素的id搜索id以匹配特定的关键字。如果找到匹配项,我希望将该元素放入数组targetNodse中。变量nodes包含所有输入,当我记录数组时,我得到[-1, -1, 0, 0],它告诉我它找到了关键字为survey-answer的特定输入元素。但是,我如何访问元素属性,而不仅仅是告诉我它找到了它?

HTML

<input type="radio" id="poll-answer-8234" name="poll_430" value="8234">
<input type="radio" id="poll-answer-9234" name="poll_430" value="9234">  
<input type="radio" id="survey-answer-7866" name="poll_430" value="7866">
<input type="radio" id="survey-answer-8998" name="poll_430" value="8998">

JS

var targetNodes, nodes, count;
targetNodes = [];
nodes = document.getElementsByTagName("input");
for (count = 0; count < nodes.length; count++) {
    node = nodes[count].id.indexOf("survey-answer");
    targetNodes.push(node);
}
console.log(targetNodes);

将节点推入数组,而不是indexOf调用的结果:

for (count = 0; count < nodes.length; count++) {
  var node = nodes[count].id.indexOf("survey-answer");
  if (node != -1) {
    targetNodes.push(nodes[count]);
  }
}

这样做:-

var targetNodes, nodes, count;
targetNodes = [];
nodes = document.getElementsByTagName("input");
for (count = 0; count < nodes.length; count++) {
    node = nodes[count].id.indexOf("survey-answer");
    if (node == 0)
      targetNodes.push(nodes[count]);
}
alert(targetNodes);

此处targetNodes数组包含输入对象。

如果您想访问输入标签的值,那么在IF条件下,设置如下

if (node == 0)
  targetNodes.push(nodes[count].value);

请参阅现场演示1和另一个直播演示2

var targetNodes, nodes, count;
targetNodes = [];
nodes = document.getElementsByTagName("input");
for (count = 0; count < nodes.length; count++)
{
    node = nodes[count].id.indexOf("survey-answer");
    if (node != -1)
    {
        targetNodes.push(nodes[count]);
    }
}
for (count = 0; count < targetNodes.length; count++)
{ 
      alert("id: " + targetNodes[count].id +
            ", name: " + targetNodes[count].name + 
            ", value: " + targetNodes[count].value);
}

这里有一个JSFiddle来测试这一点:http://jsfiddle.net/leniel/YwLEu/1/