[英]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
;
改变:
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.