Javascript 如何从期权的价值中获取其指数

Javascript 如何从期权的价值中获取其指数,javascript,Javascript,我知道如何从其索引中获取选项的值,如下代码部分所示 是否有方法通过传递文本/值(即“白色”或“蓝色”)来获取相应的索引 <select id="Color"> <option>white</option> <option>blue</option> </select> var x = document.getElementById("Color").selectedIndex; var y = document.getEl

我知道如何从其索引中获取选项的值,如下代码部分所示

是否有方法通过传递文本/值(即“白色”或“蓝色”)来获取相应的索引

<select id="Color">
<option>white</option>
<option>blue</option>
</select>

var x = document.getElementById("Color").selectedIndex;
var y = document.getElementById("Color").options;
alert("Index: " + y[x].index + " is " + y[x].text);

白色
蓝色
var x=document.getElementById(“颜色”)。选择索引;
var y=document.getElementById(“颜色”).options;
警报(“索引:+y[x]。索引+”是“+y[x]。文本);

使用jQuery是可能的

function returnIndex(value) {
    var selected = $("option:contains(" + value + ")")[0];
    if (selected) {
        selected.selected = "true";
        return selected.index;
    } else {
        console.log("Value does not exist");
    }
}

var x = document.getElementById("Color").selectedIndex;
var y = document.getElementById("Color").options;
var chosen = document.getElementById("Color").value;
alert("Index: " + returnIndex(chosen) + " is " + y[x].text);

您可以通过以下方式找到项目的索引

var z = "blue";
var y = document.getElementById("Color").options;
var myArray = [];
for(var i=0;i<y.length;i++)
{
    myArray.push(y[i].text);
}
var elementPos = myArray.map(function(x) {return x; }).indexOf(z);
alert(elementPos);
var z=“蓝色”;
var y=document.getElementById(“颜色”).options;
var myArray=[];

对于(var i=0;除了迭代一组选项之外,实在没有其他方法。哎呀……我很失望知道这一点。尽管如此,感谢您的快速回复。但是有没有一个函数可以知道数组中是否存在元素?array.prototype.find是一个实验性的函数,不建议在生产代码中使用。还有其他方法吗迭代整个数组并在每次迭代时检查。要检查数组中是否存在DOM元素,使用
querySelector()
/
querySelectorAll()
是一种很好的做法。后者将返回一个
Nodelist
,这将是另一个数组。另一种方法是使用
Node.contains(otherNode)
它将返回一个布尔值,即
其他节点是否是前者的后代。是的,这是一个很好的方法…但问题是我仍然无法避免迭代。无论如何,非常感谢