JavaScript 如何使用 NOT 的索引与选择数组
javascript how to use index of not with select array
我有一个值,称之为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 is undefined"。
使用索引的正确方法是什么,找出"a"是否在此选择框中? 在效率方面,我只是循环遍历x.text[j]会更好吗?
如果您有值数组,则可以使用 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"));
<select id="sid">
<option>a</option>
<option>b</option>
</select>
你可以这样做:
function isThere(id, value) {
return Array.prototype.some.call(document.getElementById(id).options,
function (i) { return i.value === value });
}
请注意,我在函数中添加了value
参数。
看到小提琴工作。
这样:
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;
}
这个怎么样:
<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>
当你x.text.indexOf("a");
引用 de 数组 <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
if (element.text == "a")){
alert("it is a");
}
如果您尝试显示所选选项的文本,则可以使用以下命令:
function isthere(id) {
var x = document.getElementById(id).options;
var c = x[x.selectedIndex].text
alert ("c is " + c);
}
indexOf 用于在数组中查找索引,因为 x 是 HTMLOptionsCollection不能使用索引
相关文章:
- 如何在javascript中使用click函数选择数组元素
- 如何根据下拉选择来选择数组的第一列
- 如何在加号运算符之后选择数组元素的一部分
- 如何选择数组中的第一个对象(当 array[0] 不起作用时)
- jQuery:如何获取选择数组中元素的索引
- 选择数组的随机元素来设置Youtube视频ID API
- 使用计数器更改选择数组名称
- AngularJs 帮助,在传递给隔离范围的对象中选择数组时遇到问题
- PHP 从“选择 - 数组”字段中填充文本框
- 在 jsrender 中选择数组的一部分
- JavaScript 如何使用 NOT 的索引与选择数组
- 如何随机选择数组
- 对象数组-选择数组子集,其中对象属性为值数组
- 未选择数组中的最后一项
- Jquery 选择数组中括号之间的文本
- (如何)除了math.random随机选择的一个元素外,我可以选择数组中的所有元素吗
- 从Javascript对象中选择数组
- 如何通过每次单击来选择数组的新索引
- 如何有效地随机选择数组项而不重复
- 如何只选择数组中的特定值