Javascript /!\ 解决/!\在JS中创建一个选择选项
[决议] 好的,我发现了问题。。。我真蠢-_- 很抱歉(在我创建select之后,我调用了一个函数,该函数将selectedIndex设置为0…) 我试着用JS创建一个select(这里一切正常),但是我不能选择一个特定的选项!我尝试了所有的解决方案,但没有任何效果 这是我的密码: Response是一个包含所有选项的表Javascript /!\ 解决/!\在JS中创建一个选择选项,javascript,select,selected,Javascript,Select,Selected,[决议] 好的,我发现了问题。。。我真蠢-_- 很抱歉(在我创建select之后,我调用了一个函数,该函数将selectedIndex设置为0…) 我试着用JS创建一个select(这里一切正常),但是我不能选择一个特定的选项!我尝试了所有的解决方案,但没有任何效果 这是我的密码: Response是一个包含所有选项的表 function creatSelect(reponse) { var name_div = document.getElementById('ChooseModel
function creatSelect(reponse) {
var name_div = document.getElementById('ChooseModele');
var select = document.createElement("select");
select.setAttribute("name", "ListModele");
select.setAttribute("id", "ListModele");
select.style.width = "300px";
select.setAttribute("onchange", 'updateModele(this.options[this.selectedIndex].value)');
var option = document.createElement("option");
option.setAttribute("value", "");
option.innerHTML = "";
select.appendChild(option);
for (var nbmessage=0;nbmessage<reponse.length;nbmessage++)
{
option = document.createElement("option");
option.setAttribute("value", reponse[nbmessage].name);
option.innerHTML = reponse[nbmessage].name;
if(reponse[nbmessage].name=='**modele i want selected**')
**option.setAttribute("selected","selected");**
select.appendChild(option);
}
name_div.appendChild(select);
}
函数创建选择(响应){
var name_div=document.getElementById('ChooseModele');
var select=document.createElement(“select”);
select.setAttribute(“名称”、“ListModele”);
select.setAttribute(“id”、“ListModele”);
选择.style.width=“300px”;
select.setAttribute(“onchange”,“updateModele(this.options[this.selectedIndex].value)”);
var option=document.createElement(“选项”);
option.setAttribute(“值”,“值”);
option.innerHTML=“”;
选择.appendChild(选项);
对于(var nbmessage=0;nbmessage,您需要使用元素。选项[index]。已选择属性
所以,试试这个:(未经测试)
函数创建选择(响应){
var name_div=document.getElementById('ChooseModele');
var select=document.createElement(“select”);
select.setAttribute(“名称”、“ListModele”);
select.setAttribute(“id”、“ListModele”);
选择.style.width=“300px”;
select.setAttribute(“onchange”,“updateModele(this.options[this.selectedIndex].value)”);
var option=document.createElement(“选项”);
option.setAttribute(“值”,“值”);
option.innerHTML=“”;
选择.appendChild(选项);
var selectedIndex=0;
对于(var nbmessage=0;nbmessage您的代码运行良好(我在该小提琴上使用最新的Chrome进行了测试:)
为了好玩,这里有一个使用jQuery的解决方案:
function createSelect(response) {
var $select = $( "<select>" ).appendTo($( "#ChooseModele" ));
$.each(response, function(key, value) {
var selected = value.name == 'modele i want selected';
$( "<option>", { value: value.name, selected: selected } )
.text( value.name )
.appendTo( $select );
});
}
函数createSelect(响应){
变量$select=$(“”)。附加到($(“#选择模型”);
$。每个(响应、功能(键、值){
var selected=value.name=='modele我想要选择';
$(“”,{value:value.name,selected:selected})
.text(value.name)
.appendTo($select);
});
}
显示其工作原理的小提琴:您可以保留选项的索引
,循环后,通过索引选择选项
:
var selectedIndex = 0;
for (var nbmessage=0;nbmessage<reponse.length;nbmessage++)
{
if(reponse[nbmessage].name=='**modele i want selected**')
selectedIndex = nbmessage;
}
select.selectedIndex = selectedIndex;
var selectedIndex=0;
对于(var nbmessage=0;nbmessage我想建议您使用jQuery,它将使您的生活更轻松:)看一下[1],它会问一些您需要的问题。[1]:您是否检查了if
部分是否已经到达(您需要{}
来测试if
)?该条件是否变为真?基本调试。另外,setAttribute(“onchange”)是一个糟糕的想法,您不应该这样做。事件处理是DOM的一个强大功能,您应该使用它(googleaddEventListener
)。还有一件事:。我只修改了你代码中的if
条件,以匹配我的数据。在Chrome和IE11中尝试过。嗨,是的,我达到了if(使用debbug警报)。这很奇怪,因为对我来说,它在IE、firefox中不起作用。。。
var selectedIndex = 0;
for (var nbmessage=0;nbmessage<reponse.length;nbmessage++)
{
if(reponse[nbmessage].name=='**modele i want selected**')
selectedIndex = nbmessage;
}
select.selectedIndex = selectedIndex;