Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 如何设置SELECT标记的默认选项以及如何获取所选选项的索引?_Javascript_Html_Indexing_Html Select - Fatal编程技术网

Javascript 如何设置SELECT标记的默认选项以及如何获取所选选项的索引?

Javascript 如何设置SELECT标记的默认选项以及如何获取所选选项的索引?,javascript,html,indexing,html-select,Javascript,Html,Indexing,Html Select,我希望有一个HTML和JavaScript代码来处理SELECT和OPTION元素 <select> <option> </option> <option> </option> </select> 我的解决方案是将索引设置为静态,如: document.getElementById('SelectYear').selectedIndex = 60 ; 但是,如果我不知道确切的索引,或者由于

我希望有一个HTML和JavaScript代码来处理SELECT和OPTION元素

<select>
    <option>
    </option>
    <option>
    </option>
</select>
我的解决方案是将索引设置为静态,如:

document.getElementById('SelectYear').selectedIndex = 60 ;

但是,如果我不知道确切的索引,或者由于数据库更新或手动编辑,索引会根据选定元素中发生的更改而更改?

使用jQuery将使这一过程变得相当简单。下面假设选择框的id为SelectYear

$('#SelectYear :selected').text(); //the display value
$('#SelectYear :selected').val(); // the actual value

var startyear=“1950”;
var endyear=“2020”;

for(var k=startyear;k
selectedIndex
提供选项的索引,因此是介于0和选项总数之间的数字。它既不是对象,也不是选项的id

var vSelect = document.getElementById('SelectYear')
var vIndex = vSelect.selectedIndex;
var vOption = vSelect.options[vIndex];

var vValue = vOption.value;

编辑:

我想我会对你的代码喋喋不休,因为你似乎在这里做了一些错误的事情。这可能与你的问题无关,但也许你愿意学习一些东西

1) 在
select
元素中包含
script
元素是无效的

2) 似乎您正在使用JavaScript循环来生成一些应该是静态的东西。我会更好地简单地在HTML中硬编码选项列表,或者更好,如果您想要更少的工作,就在服务器端生成它


3) 您所说的是“默认选项”,因此在生成列表时也应该这样做,因此可以按照ajreal建议的方式修改JavaScript,或者,更好的做法是,直接在HTML中为选项指定
selected
属性,这也是可能的(再次)服务器端。

要根据索引设置默认选项,请尝试以下操作:

select_element.options[the_index].defaultSelected = true;
(您可能还必须将此属性设置为false,以使用上一个默认选项。)

来源:DOM 2 HTML规范:

var dropDown=document.getElementById('myDropDown');
对于(变量i=0;i
一段工作代码。它将显示订单详细信息。键入要显示为默认值的和选项列表

var selectOrderType = $("<select></select>").attr("id", "edit-orderTypes").attr("name", "orderType").attr('class', 'form-control');
var orderTypes = ['Samad', 'Said', 'Koksulton', 'Man'];
$.each(orderTypes, function (indexPrm, valPrm) {
    let flagLcl = false;
    if (orderDetails.type == valPrm) {
        flagLcl= true;
    }
    let anOptionLcl = new Option(valPrm, valPrm, flagLcl, flagLcl);
    selectOrderType.append(anOptionLcl);
});
var selectOrderType=$(“”).attr(“id”,“编辑医嘱类型”).attr(“名称”,“医嘱类型”).attr(“类”,“表单控件”);
var orderTypes=['Samad','Said','Koksulton','Man'];
$.each(订单类型、函数(indexPrm、valPrm){
设flagLcl=false;
if(orderDetails.type==valPrm){
flagLcl=true;
}
设anOptionLcl=新选项(valPrm、valPrm、flagLcl、flagLcl);
选择OrderType.append(anOptionCl);
});

请使用代码块(ctrl+K)我们可以更容易地阅读您的问题…我可以很容易地看到问题和答案,并且代码是用特殊颜色编写的,并用正方形环绕。使用代码块的意思是什么?我不完全确定我是否理解您的意思,但听起来您要找的只是:
document.getElementById('SelectYear')).value=2010;
我尝试过,但所选选项显示的文本不是2010!正如您所知,值存储在后面,不会显示给用户,我想更改select元素中的默认选项,以防我不知道它的索引,但我知道它的值和文本。我希望您明白我的意思。谢谢您的评论..谢谢或者你的答案,是的;我知道元素、索引、值和文本之间的区别,但问题是如何使用索引为select组合框创建默认选项?你明白吗?正如我所写的,我的意思是如何通过JavaScript编程了解其索引,从而使2010成为select中的默认选项?这确实让你感到困惑想要。你的文本似乎自相矛盾。你写你想得到索引,然后你写你想设置索引,然后你说你不能设置索引,因为你没有索引。我想你真的需要简化你的问题。换句话说,我有大约100年的select标签。我知道每年的文本和值,但我知道不知道索引(我指的是编程)所选选项的显示文本不是2010!正如您所知,值存储在后面,不会显示给用户,我想更改select元素中的默认选项,以防我不知道它的索引,但我知道它的值和文本是2010。我知道2010理论上索引为60,但在代码中如何做到这一点?我希望你能理解我的观点。谢谢你的评论。谢谢你,这似乎是一个更相关、更有效的答案,我可以将其更改为使用当前日期年。自我评论代码可能很好,但并不完全清楚这是否真的达到了OP的要求。这是一个非常老的问题,而这个代码片段可能解决了这个问题,确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!
var vSelect = document.getElementById('SelectYear')
var vIndex = vSelect.selectedIndex;
var vOption = vSelect.options[vIndex];

var vValue = vOption.value;
select_element.options[the_index].defaultSelected = true;
document.getElementById("country").value = "your index";
var dropDown = document.getElementById('myDropDown');
for(var i = 0; i < dropDown.options.length; i++) {
    if(dropDown.options[i].text == 'value you want to set in drop down') {
     dropDown.selectedIndex = i; 
     break;
 }
var selectOrderType = $("<select></select>").attr("id", "edit-orderTypes").attr("name", "orderType").attr('class', 'form-control');
var orderTypes = ['Samad', 'Said', 'Koksulton', 'Man'];
$.each(orderTypes, function (indexPrm, valPrm) {
    let flagLcl = false;
    if (orderDetails.type == valPrm) {
        flagLcl= true;
    }
    let anOptionLcl = new Option(valPrm, valPrm, flagLcl, flagLcl);
    selectOrderType.append(anOptionLcl);
});