我有以下HTML <select>元素:

<select id="leaveCode" name="leaveCode">
  <option value="10">Annual Leave</option>
  <option value="11">Medical Leave</option>
  <option value="14">Long Service</option>
  <option value="17">Leave Without Pay</option>
</select>

使用带有leaveCode数字作为参数的JavaScript函数,我如何在列表中选择适当的选项?


当前回答

function setSelectValue (id, val) {
    document.getElementById(id).value = val;
}
setSelectValue('leaveCode', 14);

其他回答

你很可能想要这个:

$("._statusDDL").val('2');

OR

$('select').prop('selectedIndex', 3); 

这里提到的大部分代码都不适合我!

最后,这招奏效了

窗口。addEventListener很重要,否则,你的JS代码将在Options中获取值之前运行

    window.addEventListener("load", function () {
            // Selecting Element with ID - leaveCode  //
            var formObj = document.getElementById('leaveCode');

            // Setting option as selected
            let len;
            for (let i = 0, len = formObj.length; i < len; i++){
                if (formObj[i].value == '<value to show in Select>') 
                 formObj.options[i].selected = true;
            }
    });

希望这有帮助!

我比较了不同的方法:

JS和jQuery设置select值的不同方法比较

代码:

$(function() {
    var oldT = new Date().getTime();
     var element = document.getElementById('myId');
    element.value = 4;
    console.error(new Date().getTime() - oldT);

    oldT = new Date().getTime();
    $("#myId option").filter(function() {
        return $(this).attr('value') == 4;
    }).attr('selected', true);
    console.error(new Date().getTime() - oldT);

    oldT = new Date().getTime();
    $("#myId").val("4");
    console.error(new Date().getTime() - oldT);
});

在有~4000个元素的选择上输出:

1毫秒 58岁的女士 612毫秒

Firefox 10。注意:我做这个测试的唯一原因,是因为jQuery在我们的列表中有~2000个条目时表现非常糟糕(选项之间的文本更长)。 在val()之后,我们有大约2秒的延迟。

还要注意:我设置的值取决于实际值,而不是文本值。

这是威廉回答的尺寸改进

leaveCode.value = '14';

leaveCode。价值= 14; <选择id=“leaveCode” <option value=“10”>Annual Leave</option> <option value="11">保单</option> <option value=“14”>Long Service</option> <option value="17">离开无报酬</option> 选择< - >

function setSelectValue (id, val) {
    document.getElementById(id).value = val;
}
setSelectValue('leaveCode', 14);