document.createElement(“option”)创建的OPTION元素始终将selected属性设置为true

时间:2017-01-30 08:30:44

标签: javascript html createelement

我正在使用javascript和IE11来实现下面的代码,使用javascript在组合框中添加选项

    var bSelected = false;

    for (count of elements to be created)
    {
          **// set value and text and whether to selected the element or not**

          // Create an option and add it to the combo
          opt = document.createElement ("option");
          opt_txt = document.createTextNode (textPart);
          opt.appendChild (opt_txt);
          opt.setAttribute ("value", valuePart);
          opt.setAttribute ("text", textPart);
          opt.setAttribute ("selected", bSelected);
    }

现在,即使将selected设置为false,opt.selected属性也始终为true。元素由createElement函数创建后,默认值为true。请帮忙,为什么它不变为假?

在IE9中,它工作正常(不同的HTML版本?)

1 个答案:

答案 0 :(得分:1)

selected属性唯一允许的值为"selected"(或"",这意味着相同的事情),但浏览器中的错误恢复意味着任何价值将被视为"selected"

当您致电opt.setAttribute ("selected", bSelected);时,bSelected的值会转换为字符串并设置为该值。

在这种情况下,false会转换为"false"并视为"selected"

在处理布尔属性时,如果您不想设置它们,那么根本不设置它们

或者,您可以设置选定的DOM属性而不是属性。该属性确实采用truefalse而不是"selected"

opt.selected = bSelected;