如何使用JavaScript以编程方式选择HTML选项?

我有这样的选项菜单:

<form name="AddAndEdit">
<select name="list" id="personlist">
<option value="11">Person1</option>
<option value="27">Person2</option>
<option value="17">Person3</option>
<option value="10">Person4</option>
<option value="7">Person5</option>
<option value="32">Person6</option>
<option value="18">Person7</option>
<option value="29">Person8</option>
<option value="28">Person9</option>
<option value="34">Person10</option>
<option value="12">Person11</option>
<option value="19">Person12</option>
</select>
</form>

现在我想通过使用href来改变所选的选项。例如:

<a href="javascript:void(0);"
onclick="document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected';">change</a>

但是我想选择带有value=11 (Person1)的选项,而不是Person12

如何更改此代码?

685893 次浏览

改变

document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected'

document.getElementById('personlist').value=Person_ID;

数组索引将从0开始。如果你想要value=11 (Person1),你将用位置getElementsByTagName('option')[10].selected来获取它。

我相信博客文章JavaScript初学者-根据值选择一个下拉选项可能对你有帮助。

<a href="javascript:void(0);" onclick="selectItemByValue(document.getElementById('personlist'),11)">change</a>


function selectItemByValue(elmnt, value){


for(var i=0; i < elmnt.options.length; i++)
{
if(elmnt.options[i].value === value) {
elmnt.selectedIndex = i;
break;
}
}
}

工具作为处理选择框的纯JavaScript代码:

< em >图形理解:< / em >

图像- A

enter image description here


图像- B

enter image description here


Image - C

enter image description here

更新-2019年6月25日| Fiddler DEMO

JavaScript代码:

/**
* Empty Select Box
* @param eid Element ID
* @param value text
* @param text text
* @author Neeraj.Singh
*/
function emptySelectBoxById(eid, value, text) {
document.getElementById(eid).innerHTML = "<option value='" + value + "'>" + text + "</option>";
}




/**
* Reset Select Box
* @param eid Element ID
*/


function resetSelectBoxById(eid) {
document.getElementById(eid).options[0].selected = 'selected';
}




/**
* Set Select Box Selection By Index
* @param eid Element ID
* @param eindx Element Index
*/


function setSelectBoxByIndex(eid, eindx) {
document.getElementById(eid).getElementsByTagName('option')[eindx].selected = 'selected';
//or
document.getElementById(eid).options[eindx].selected = 'selected';
}




/**
* Set Select Box Selection By Value
* @param eid Element ID
* @param eval Element Index
*/
function setSelectBoxByValue(eid, eval) {
document.getElementById(eid).value = eval;
}




/**
* Set Select Box Selection By Text
* @param eid Element ID
* @param eval Element Index
*/
function setSelectBoxByText(eid, etxt) {
var eid = document.getElementById(eid);
for (var i = 0; i < eid.options.length; ++i) {
if (eid.options[i].text === etxt)
eid.options[i].selected = true;
}
}




/**
* Get Select Box Text By ID
* @param eid Element ID
* @return string
*/


function getSelectBoxText(eid) {
return document.getElementById(eid).options[document.getElementById(eid).selectedIndex].text;
}




/**
* Get Select Box Value By ID
* @param eid Element ID
* @return string
*/


function getSelectBoxValue(id) {
return document.getElementById(id).options[document.getElementById(id).selectedIndex].value;
}

你也可以像这样修改select.options.selectedIndex DOM属性:

function selectOption(index){
document.getElementById("select_id").options.selectedIndex = index;
}
<p>
<select id="select_id">
<option selected>first option</option>
<option>second option</option>
<option>third option</option>
</select>
</p>
<p>
<button onclick="selectOption(0);">Select first option</button>
<button onclick="selectOption(1);">Select second option</button>
<button onclick="selectOption(2);">Select third option</button>
</p>

mySelect.value = myValue;

其中mySelect是你的选择框,而myValue是你想要更改它的值。

你也可以使用JQuery

$(document).ready(function () {
$('#personlist').val("10");
}

如果你用javascript添加这个选项

function AddNewOption(userRoutes, text, id)
{
var option = document.createElement("option");
option.text = text;
option.value = id;
option.selected = "selected";
userdRoutes.add(option);
}

这是一个老帖子,但如果有人还在寻找这种问题的解决方案,以下是我想出的:

<script>
document.addEventListener("DOMContentLoaded", function(e) {
document.forms['AddAndEdit'].elements['list'].value = 11;
});
</script>

从技术上讲,您自己的答案并没有错,但您弄错了索引,因为索引从0开始,而不是从1开始。所以你选错了。

document.getElementById('personlist').getElementsByTagName('option')[**10**].selected = 'selected';

此外,对于标签不完全是英文或数字的情况,您的答案实际上是一个很好的答案。

例如,如果它们使用亚洲字符,其他告诉您使用.value()的解决方案可能并不总是有效,不会做任何事情。按标签选择是忽略实际文本并按元素本身选择的好方法。

注:选项索引从0开始计数。这意味着第一个选项的索引为0。

document.querySelector(".add__btn").addEventListener("click", function(){
var index = 1; /*change option value here*/  document.querySelector(".add__type").options.selectedIndex = index;
document.querySelector(".add__description").value = "Option Index";
document.querySelector(".add__value").value = index;
});
<html>
<div class="add__container">
<select class="add__type">
<option value="inc" selected>+</option>
<option value="exp">-</option>
</select>
<input type="text" class="add__description" placeholder="Add description">
<input type="number" class="add__value" placeholder="Value">
<button class="add__btn"> Submit </button>
</div>


<h4> Default Option Value will be selected after pressing Submit </h4>