Javascript:根据其内容选择选项
基本上是这样,但在纯javascript中:Javascript:根据其内容选择选项,javascript,html,html-select,Javascript,Html,Html Select,基本上是这样,但在纯javascript中: 我有一个包含许多国家/州的选择列表,我希望能够根据标记之间的内容选择一个 <option value="4783">Argentina</option> 阿根廷 (我知道我可以使用该值,但每个值都是随机的数字网格,因此我必须收集每个值-这不经济)这有点痛苦,但在纯JavaScript中: for(var i=0,sL=mySelObj.length;i<sL;i++){ if(mySelObj.options[
我有一个包含许多国家/州的选择列表,我希望能够根据
标记之间的内容选择一个
<option value="4783">Argentina</option>
阿根廷
(我知道我可以使用该值,但每个值都是随机的数字网格,因此我必须收集每个值-这不经济)这有点痛苦,但在纯JavaScript中:
for(var i=0,sL=mySelObj.length;i<sL;i++){
if(mySelObj.options[i].text == myValue){
mySelObj.selectedIndex = i;
break;
}
}
for(var i=0,sL=mySelObj.length;i有点痛苦,但在纯JavaScript中:
for(var i=0,sL=mySelObj.length;i<sL;i++){
if(mySelObj.options[i].text == myValue){
mySelObj.selectedIndex = i;
break;
}
}
for(var i=0,sL=mySelObj.length;i使用textContent
属性可以查看标记内部的内容。在我的头脑中,不需要测试,这应该可以:
function selectByDisplayValue(selectTag, displayValue)
{
var options = selectTag.getElementsByTagName('option');
for(var i = 0; i < options.length; i++)
if(options[i].textContent == displayValue)
{
options[i].selected = true;
break;
}
}
功能selectByDisplayValue(selectTag,displayValue)
{
var options=selectTag.getElementsByTagName('option');
对于(var i=0;i,textContent
属性可以让您看到标签中的内容。在我看来,不需要测试,这应该可以:
function selectByDisplayValue(selectTag, displayValue)
{
var options = selectTag.getElementsByTagName('option');
for(var i = 0; i < options.length; i++)
if(options[i].textContent == displayValue)
{
options[i].selected = true;
break;
}
}
功能selectByDisplayValue(selectTag,displayValue)
{
var options=selectTag.getElementsByTagName('option');
对于(var i=0;i,现在querySelector在大多数浏览器中都可用,您可以使用:
document.querySelector('select').selectedIndex =
document.querySelector('option[value=4783]').index;
现在querySelector在大多数浏览器中都可用,您可以使用:
document.querySelector('select').selectedIndex =
document.querySelector('option[value=4783]').index;
只是晚了10年,但让我们看看新时代的解决方案
let $select = document.querySelector('select[name="countries"]');
let compareValue = 'Argentina';
$select.value = [...$select.options].filter(option => {
return option.innerText === compareValue;
})[0].value;
如果您在ES6+中工作,这里有一个简单的“一行程序”来实现这个技巧
如果您需要广泛的兼容性,请使用transpiler或其他解决方案
let $select = document.querySelector('select[name="countries"]');
let compareValue = 'Argentina';
$select.value = [...$select.options].filter(option => {
return option.innerText === compareValue;
})[0].value;
真正的一行表达式:
$select.value = [...$select.options].filter(option => option.innerText === compareValue)[0].value;
只是晚了10年,但让我们看看新时代的解决方案
let $select = document.querySelector('select[name="countries"]');
let compareValue = 'Argentina';
$select.value = [...$select.options].filter(option => {
return option.innerText === compareValue;
})[0].value;
如果您在ES6+中工作,这里有一个简单的“一行程序”来实现这个技巧
如果您需要广泛的兼容性,请使用transpiler或其他解决方案
let $select = document.querySelector('select[name="countries"]');
let compareValue = 'Argentina';
$select.value = [...$select.options].filter(option => {
return option.innerText === compareValue;
})[0].value;
真正的一行表达式:
$select.value = [...$select.options].filter(option => option.innerText === compareValue)[0].value;
textContent
是IE(以及其他一些小型或老式浏览器)不支持的DOM级别3方法。对于选项
对象,您可以使用.text
,可以追溯到JavaScript 1.0。textContent
是IE(以及其他一些小型或老式浏览器)不支持的DOM级别3方法对于选项
对象,您可以使用文本
,它可以追溯到JavaScript 1.0。痛苦的是,您需要在列表上迭代…这意味着如果所需的值是最后一个项,并且有100个项,那么在选择最终选项之前,您必须检查每个项。如果可能,我将始终尝试并预先选择“希望”所在服务器上的值在代码生成时确定所选选项更容易。哦,我明白了。我认为与其他客户端解决方案相比,您的意思是痛苦的。痛苦在于您需要迭代列表…这意味着如果所需的值是最后一项,并且有100个项,那么在选择最终选项之前,您必须检查每个项。其中可能的话,我会一直尝试在服务器上预先选择“希望”的值在代码生成时确定所选选项更容易。哦,我明白了。我认为与其他客户端解决方案相比,您的意思是痛苦的。如果您知道需要支持哪些浏览器,可以在上查看querySelector的支持矩阵。如果您知道需要支持哪些浏览器,可以查看querySelec的支持矩阵在。