<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函数,如何在列表中选择适当的选项? /> #1 楼
您可以使用以下功能: selectElement('leaveCode', '11')
function selectElement(id, valueToSelect) {
let element = document.getElementById(id);
element.value = valueToSelect;
}
评论
很好的答案,这比遍历选项更容易。而且符合标准:dev.w3.org/html5/spec/…。如果存在浏览器不兼容(当然有:),我将非常有兴趣知道它们是什么。这通常是您在ppk上需要依靠的东西,但是他顽固地拒绝出现在我对此主题的搜索中。
– Philo
2012年5月22日17:47
那多重选择呢?如果有多个选项(至少在Chrome 25中),这似乎不起作用。
–Georgii Ivankin
13年4月4日在16:13
正如@ ring0所指出的,当valueToSelect不存在时,它将在chrome中插入一个空白条目。而IE和firefox保留最后选择的值。
– Karthik Bose
15年6月24日在4:55
IE的注意事项:
#2 楼
如果您使用的是jQuery,还可以执行以下操作:$('#leaveCode').val('14');
这将选择值为14的
<option>
。使用普通Javascript,也可以通过以下两种
Document
方法来实现:通过
document.querySelector
,您可以基于CSS选择器选择元素:document.querySelector('#leaveCode').value = '14'
使用更成熟的方法
document.getElementById()
,正如函数名称所暗示的那样,让您根据其id
选择一个元素:document.getElementById('leaveCode').value = '14'
您可以运行下面的代码片段以查看这些方法和正在使用的jQuery函数:
const jQueryFunction = () => {
$('#leaveCode').val('14');
}
const querySelectorFunction = () => {
document.querySelector('#leaveCode').value = '14'
}
const getElementByIdFunction = () => {
document.getElementById('leaveCode').value='14'
}
input {
display:block;
margin: 10px;
padding: 10px
}
<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>
<input type="button" value="$('#leaveCode').val('14');" onclick="jQueryFunction()" />
<input type="button" value="document.querySelector('#leaveCode').value = '14'" onclick="querySelectorFunction()" />
<input type="button" value="document.getElementById('leaveCode').value = '14'" onclick="getElementByIdFunction()" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
评论
这也可以用于多选。只需将字符串数组而不是单个字符串传递给'val'函数即可。请参阅:stackoverflow.com/a/16583001/88409
– Triynko
2015年12月22日在21:38
有没有办法通过这样做也触发$('#leaveCode')。on('change',function()吗?
– Lieuwe
16-11-24在16:56
$(“#leaveCode”)。val(“ 14”)。change();
–劳伦
17年6月19日在19:28
#3 楼
function setSelectValue (id, val) {
document.getElementById(id).value = val;
}
setSelectValue('leaveCode', 14);
#4 楼
不回答问题,但您也可以按索引选择,其中i是您要选择的项目的索引:var formObj = document.getElementById('myForm');
formObj.leaveCode[i].selected = true;
您还可以循环浏览这些项目用显示值按循环选择:
for (var i = 0, len < formObj.leaveCode.length; i < len; i++)
if (formObj.leaveCode[i].value == 'xxx') formObj.leaveCode[i].selected = true;
评论
不应该形成Obj.leaveCode [i] .selected = true;是formObj.options [i] .selected = true; ?
–大卫·克里斯托弗·雷诺兹(David Christopher Reynolds)
17年10月3日,9:58
#5 楼
我比较了不同的方法:比较如何用JS或jQuery设置选择值的不同方法
代码:
$(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个元素的select上的输出:
1 ms
58 ms
612 ms
使用Firefox10。注意:我进行此测试的唯一原因是,因为jQuery在我们的列表中的性能非常差,有大约2000个条目(它们的使用时间更长)
在val()之后大约有2 s的延迟。
也请注意:我是根据实际值而不是文本值来设置值。 />
#6 楼
我尝试了上述基于JavaScript / jQuery的解决方案,例如:$("#leaveCode").val("14");
和
var leaveCode = document.querySelector('#leaveCode');
leaveCode[i].selected = true;
一个AngularJS应用,其中有一个必需的
#7 楼
document.getElementById('leaveCode').value = '10';
应将选择设置为“年假”
#8 楼
function foo(value)
{
var e = document.getElementById('leaveCode');
if(e) e.value = value;
}
#9 楼
如果需要,最简单的方法是:1)单击定义选择选项的按钮
2)转到另一页,其中选择选项为
3)在另一页上选择该选项值
1)您的按钮链接(例如,在主页上)
<a onclick="location.href='contact.php?option=1';" style="cursor:pointer;">Sales</a>
<a onclick="location.href='contact.php?option=2';" style="cursor:pointer;">IT</a>
(其中contact.php是具有选择选项的页面。注意页面URL带有?option = 1或2)
2)将此代码放在第二页上(我的案例contact.php)
<?
if (isset($_GET['option']) && $_GET['option'] != "") {
$pg = $_GET['option'];
} ?>
3)根据单击的按钮选择选项值
<select>
<option value="Sales" <? if ($pg == '1') { echo "selected"; } ?> >Sales</option>
<option value="IT" <? if ($pg == '2') { echo "selected"; } ?> >IT</option>
</select>
..依此类推。
所以这是一种简单的传递方法值通过url中的GET到另一个页面(带有选择选项列表)。没有表格,没有ID ..仅需3个步骤,就可以完美运行。
#10 楼
假设您的表单名为form1:function selectValue(val)
{
var lc = document.form1.leaveCode;
for (i=0; i<lc.length; i++)
{
if (lc.options[i].value == val)
{
lc.selectedIndex = i;
return;
}
}
}
#11 楼
应该遵循以下原则:function setValue(inVal){
var dl = document.getElementById('leaveCode');
var el =0;
for (var i=0; i<dl.options.length; i++){
if (dl.options[i].value == inVal){
el=i;
break;
}
}
dl.selectedIndex = el;
}
#12 楼
为什么不为元素的ID添加变量并使它成为可重用的函数?function SelectElement(selectElementId, valueToSelect)
{
var element = document.getElementById(selectElementId);
element.value = valueToSelect;
}
#13 楼
此处提到的大多数代码对我都不起作用! 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;
}
});
希望如此!
#14 楼
最短这是威廉·威廉姆斯答案的尺寸改进
this['leaveCode'].value = '14';
this['leaveCode'].value = '14';
<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>
#15 楼
如果使用PHP,则可以尝试以下操作:$value = '11';
$first = '';
$second = '';
$third = '';
$fourth = '';
switch($value) {
case '10' :
$first = 'selected';
break;
case '11' :
$second = 'selected';
break;
case '14' :
$third = 'selected';
break;
case '17' :
$fourth = 'selected';
break;
}
echo'
<select id="leaveCode" name="leaveCode">
<option value="10" '. $first .'>Annual Leave</option>
<option value="11" '. $second .'>Medical Leave</option>
<option value="14" '. $third .'>Long Service</option>
<option value="17" '. $fourth .'>Leave Without Pay</option>
</select>';
评论
这是一个JavaScript问题,而不是PHP / HTML问题
–最大
8月11日8:17
#16 楼
您最可能希望这样做:$("._statusDDL").val('2');
OR
$('select').prop('selectedIndex', 3);
评论
这是假设OP虽然正在使用JQuery
–巴里·迈克尔·道尔(Barry Michael Doyle)
16年3月3日在8:00
@BarryMichaelDoyle,不是,因为问题的标题都以JavaScript结尾。
–尤利安·奥诺夫雷(Iulian Onofrei)
18年1月25日在16:14
#17 楼
恐怕目前无法对此进行测试,但是在过去,我相信我必须给每个选项标签指定一个ID,然后我才执行以下操作:document.getElementById("optionID").select();
,如果那行不通,也许会让您更接近解决方案:P
评论
HTMLOptionElement没有select()方法(它没有在所有HTML元素的标准集上定义任何其他方法)。但是,您可以将selected属性设置为true。
–怀特先生
2012年3月28日上午11:35
评论
请参阅我的答案以比较不同方法的性能