繁体   English   中英

如何获取选择框中所有值的列表?

[英]How can I get a list of all values in select box?

我难住了。 我有一个带有下拉列表的表单,我想获取列表中所有值的列表。 我从 w3 学校中提取了以下示例(是的,我知道它不可靠,但堆栈溢出的其他解决方案似乎与此非常相似)。 它对我不起作用,我尝试将其插入 jsfiddle,但没有成功。

HTML:
<form>Select your favorite fruit:
    <select id="mySelect">
        <option value="a">Apple</option>
        <option value="o">Orange</option>
        <option value="p">Pineapple</option>
        <option value="b">Banana</option>
    </select>
</form>
<button type="button" onclick="displayResult()">Display text of all options</button>

javascript:

function displayResult() {
    var x = document.getElementById("mySelect");
    var txt = "All options: ";
    var i;
    for (i = 0; i < x.length; i++) {
        txt = txt + "\n" + x.options[i].value;
    }
    alert(txt);
}

不适用于 jsfiddle: http : //jsfiddle.net/WfBRr/1/

但是,它在他们的网站上工作: http : //www.w3schools.com/jsref/tryit.asp?filename=tryjsref_option_text2

关于如何解决这个问题的任何想法?

你有两个问题:

1) 您包含 HTML 的顺序。 尝试在小提琴的 JavaScript 设置中将下拉列表从“onLoad”更改为“no wrap - head”。

2)您的函数打印值。 你真正追求的是文本

x.options[i].text; 而不是x.options[i].value ;

http://jsfiddle.net/WfBRr/5/

改变:

x.length

到:

x.options.length

链接到小提琴

我同意亚伯拉罕 - 你可能想使用text而不是value

更新
您的小提琴不起作用的原因是因为您选择了选项:“onLoad”而不是:“No wrap - in”

根据 DOM 结构,您可以使用以下代码:

var x = document.getElementById('mySelect');
     var txt = "";
     var val = "";
     for (var i = 0; i < x.length; i++) {
         txt +=x[i].text + ",";
         val +=x[i].value + ",";
      }

看起来将点击事件直接放在按钮上是导致问题的原因。 由于某种原因,它找不到该功能。 不知道为什么...

如果您在 javascript 中附加事件处理程序,它确实可以工作。

在这里看到它: http : //jsfiddle.net/WfBRr/7/

<button id="display-text" type="button">Display text of all options</button>

document.getElementById('display-text').onclick = function () {
    var x = document.getElementById("mySelect");
    var txt = "All options: ";
    var i;
    for (i = 0; i < x.length; i++) {
        txt = txt + "\n" + x.options[i].value;
    }
    alert(txt);
}

例子:

<select name="sel1" id="sel1">
    <option value="001">option 001</option>
    <option value="002">option 002</option>
    <option value="003">option 003</option>
    <option value="004">option 004</option>
</select>

价值观:

let selectElement = document.querySelectorAll('[name=sel1]');
let optionValues = [...selectElement[0].options].map(o => o.value)

选项文本

let selectElement = document.querySelectorAll('[name=sel1]');
let optionNames = [...selectElement[0].options].map(o => o.text)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM