Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:根据其内容选择选项_Javascript_Html_Html Select - Fatal编程技术网

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[

基本上是这样,但在纯javascript中:

我有一个包含许多国家/州的选择列表,我希望能够根据
标记之间的内容选择一个

<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的支持矩阵在。