querySelectorAll获取下拉菜单的选定值

时间:2019-07-09 09:29:09

标签: javascript

我想使用querySelectorAll获取页面上多个下拉菜单的选定值,然后将其打印在页面上的其他位置。

我正在努力找到正确的方法,因为它们都有不同的名称(“ dropDown [0]”和“ dropDown [1]”等)。我无法更改命名约定,因此我需要找到一种选择名称中具有“ dropDown”的所有下拉菜单的方法,然后打印用逗号分隔的值。

这是我到目前为止尝试过的:

const dropDowns = document.querySelectorAll('select[name="dropDown"]')
if (!dropDowns) return
this.dropDown = dropDowns.options[dropDowns.selectedIndex].text
this.dropDown.join(', ')

<div class="form-group">
  <label for="dropDown1">Dropdown 1:</label>
  <select name="dropDown[0]" id="dropDown1" class="form-control">
    <option value="D20">Option 1</option>
    <option value="T20">Option 2</option>
    <option value="T11">Option 3</option>
    <option value="S10">Option 4</option>
  </select>
</div>
<div class="form-group">
  <label for="dropDown2">Dropdown 2:</label>
  <select name="dropDown[1]" id="dropDown2" class="form-control">
    <option value="D20">Option 1</option>
    <option value="T20">Option 2</option>
    <option value="T11">Option 3</option>
    <option value="S10">Option 4</option>
  </select>
</div>

5 个答案:

答案 0 :(得分:1)

使用^= starts with selector,然后循环:

var res = [];

[...document.querySelectorAll('select[name^="dropDown"]')].forEach(sel => res.push(sel.value) )

const onchange = () => {
  var res = [];
  [...document.querySelectorAll('select[name^="dropDown"]')].forEach(sel => res.push(sel.value) );
  document.getElementById("res").innerText = res.join(", ")
}
[...document.querySelectorAll('select[name^="dropDown"]')].forEach(sel => sel.addEventListener("change",onchange));  
onchange()  
<div class="form-group">
  <label for="dropDown1">Dropdown 1:</label>
  <select name="dropDown[0]" id="dropDown1" class="form-control">
    <option value="D20">Option 1</option>
    <option value="T20">Option 2</option>
    <option value="T11">Option 3</option>
    <option value="S10">Option 4</option>
  </select>
</div>
<div class="form-group">
  <label for="dropDown2">Dropdown 2:</label>
  <select name="dropDown[1]" id="dropDown2" class="form-control">
    <option value="D20">Option 1</option>
    <option value="T20">Option 2</option>
    <option value="T11">Option 3</option>
    <option value="S10">Option 4</option>
  </select>
</div>
<span id="res"></span>

答案 1 :(得分:1)

#include "Data.h"
class P{

protected:
          Data birthday;
public:
       P();
       P(const int, const int, const int); //i should pass day, month, year right?
       P(const P&);
}

答案 2 :(得分:1)

您还可以执行以下操作来选择选项的值:

subscribe
var Container = document.querySelector('#output');

var Dropdowns = document.querySelectorAll('select');


// Select All Options Values:
for ( var dropdown in Dropdowns ) {
  for ( var i = 0; i < Dropdowns[dropdown].children.length; i++ ) {
    var elem = document.createElement('p');
    elem.innerHTML = Dropdowns[dropdown].children[i].value;
    Container.appendChild(elem);
  }
}

只是一个示例。

答案 3 :(得分:0)

您可以尝试使用Attribute selector

const dropDowns = document.querySelectorAll('select[name^="dropDown"]');
dropDowns.forEach(function(el){
  el.addEventListener('change', getOptions);
});

function getOptions(){
  console.clear();
  var res = Array.from(dropDowns).map(d => d.options[d.selectedIndex].text).join(', ');
  console.log(res);
}

getOptions();
<div class="form-group">
  <label for="dropDown1">Dropdown 1:</label>
  <select name="dropDown[0]" id="dropDown1" class="form-control">
    <option value="D20">Option 1</option>
    <option value="T20">Option 2</option>
    <option value="T11">Option 3</option>
    <option value="S10">Option 4</option>
  </select>
</div>
<div class="form-group">
  <label for="dropDown2">Dropdown 2:</label>
  <select name="dropDown[1]" id="dropDown2" class="form-control">
    <option value="D20">Option 1</option>
    <option value="T20">Option 2</option>
    <option value="T11">Option 3</option>
    <option value="S10">Option 4</option>
  </select>
</div>

答案 4 :(得分:0)

您不能在选择器中使用正则表达式,但CSS选择器功能强大,可以满足正则表达式启发的“以...开头”语法。

您可以使用匹配属性选择器的子字符串:select[name^=dropDown]

读取“ select类型的节点,其属性为name,以“ dropDown”开头

来自formal specification

  

[att ^ = val]

     

表示一个具有att属性的元素,其值以前缀“ val”开头。如果“ val”是空字符串,则选择器不代表任何内容。