我有一个值,称之为a,以及一个id =“sid”的选择框。我是javascript,想知道我的值a是否是选择框中的选项之一。
我做到了这一点:HTML:
<select id = "sid">
<option>a</option>
<option>b</option>
</select>
<script>
isThere('sid')
</script>
Javascript:
function isthere(id) {
var x = document.getElementById(id).options;
for (j = 0; j<= 1; j++) {
alert ("arr is " + x[j].text );
}
var c = x.text.indexOf("a");
alert ("c is " + c);
}
循环为x [j] .text提供正确的答案。我没有得到c的值。 Firebug给出了错误“x.text未定义”。
使用indexOf的正确方法是什么,找出“a”是否在此选择框中?效率方面,我会更好地循环通过x.text [j]?
答案 0 :(得分:3)
如果您有一组值,则可以使用indexOf
。
要获取值数组,可以使用
[].map.call(x, function(option) {
return option.value;
});
因此,您可以使用
[].map.call(x, function(option) {
return option.value;
}).indexOf("a");
在ECMAScript 6中,您可以将其简化为
[].map.call(x, option => option.value).indexOf("a");
var x = document.getElementById("sid");
alert([].map.call(x, function(option) {
return option.value;
}).indexOf("a"));
&#13;
<select id="sid">
<option>a</option>
<option>b</option>
</select>
&#13;
答案 1 :(得分:0)
这样:
function isThere(id, value) {
for (i = 0; i < document.getElementById(id).length; ++i){
if (document.getElementById(id).options[i].value === value){
return true;
}
}
return false;
}
答案 2 :(得分:0)
这个怎么样:
<HTML>
<head>
<script>
function makeArray(id) {
var x = document.getElementById(id);
var arr = [];
for (var i = 0; i < x.length; i++) {
arr.push(x.options[i].value);
}
return arr;
}
function isthere(id) {
var arr = makeArray(id);
var c = arr.indexOf("b");
alert ("c is " + c);
}
</script>
</head>
<BODY onload="isthere('sid');">
<select id = "sid">
<option>a</option>
<option>b</option>
</select>
</body>
</html>
答案 3 :(得分:0)
当你x.text.indexOf("a");
对阵列<option>
进行反思时。没有元素的文本。
......你也可以......
var x = document.getElementById(id).options;
for (j = 0; j<= 1; j++) {
if (x[j].text.indexOf("a"){
alert("it is a");
}
}
或 var x = document.getElementById(id).options;
x.forEach(function (element) {
if (element.text.indexOf("a")){
alert("it is a");
}
});
您可以使用==
代替.indexOf
LIKE那个
if (element.text == "a")){
alert("it is a");
}
答案 4 :(得分:0)
如果您尝试显示所选选项的文本,可以使用此选项:
function isthere(id) {
var x = document.getElementById(id).options;
var c = x[x.selectedIndex].text
alert ("c is " + c);
}
indexOf用于在数组中查找索引,因为x是 HTMLOptionsCollection 你不能使用indexOf