Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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 /!\ 解决/!\在JS中创建一个选择选项_Javascript_Select_Selected - Fatal编程技术网

Javascript /!\ 解决/!\在JS中创建一个选择选项

Javascript /!\ 解决/!\在JS中创建一个选择选项,javascript,select,selected,Javascript,Select,Selected,[决议] 好的,我发现了问题。。。我真蠢-_- 很抱歉(在我创建select之后,我调用了一个函数,该函数将selectedIndex设置为0…) 我试着用JS创建一个select(这里一切正常),但是我不能选择一个特定的选项!我尝试了所有的解决方案,但没有任何效果 这是我的密码: Response是一个包含所有选项的表 function creatSelect(reponse) { var name_div = document.getElementById('ChooseModel

[决议] 好的,我发现了问题。。。我真蠢-_- 很抱歉(在我创建select之后,我调用了一个函数,该函数将selectedIndex设置为0…)

我试着用JS创建一个select(这里一切正常),但是我不能选择一个特定的选项!我尝试了所有的解决方案,但没有任何效果

这是我的密码: Response是一个包含所有选项的表

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的一个强大功能,您应该使用它(google
addEventListener
)。还有一件事:。我只修改了你代码中的
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;