设置HTML复选框以使用javascript进行检查

设置HTML复选框以使用javascript进行检查,javascript,html,checkbox,Javascript,Html,Checkbox,我有一个构造函数,它在循环中创建一系列复选框 我正在尝试将复选框设置为选中,但它不起作用 代码如下: function customMultiSelect(pDiv, pOptions, inputID, currentSelected) { this.Div = pDiv; this.options = pOptions; this._initialise(); for (var idxOption = 0; idxOption <

我有一个构造函数,它在循环中创建一系列复选框

我正在尝试将复选框设置为选中,但它不起作用

代码如下:

function customMultiSelect(pDiv, pOptions, inputID, currentSelected)
{        
    this.Div = pDiv;
    this.options = pOptions;    
    this._initialise();

    for (var idxOption = 0; idxOption < pOptions.length; idxOption++) {

        var checkbox = document.createElement("input");
        checkbox.type = "checkbox";
        checkbox.style.width = "30px";
        checkbox.style.border = "none";
        checkbox.style.float = "right";

        if (pOptions[idxOption] != "") {
            var arrTemp2 = pOptions[idxOption].split(",");
            var sText = arrTemp2[0];

            if (arrTemp2.length > 1) {
                sText = arrTemp2[1];
            }

            checkbox.value = arrTemp2[0];
            checkbox.id = inputID + "|" + idxOption;
            checkbox.checked = true;
            var textLabel = document.createElement("label");
            textLabel.appendChild(checkbox);
            textLabel.innerHTML += arrTemp2[1];
            textLabel.style.display = "block";
            textLabel.style.clear = "right";

        }

        this.Div.appendChild(textLabel);
    }

}
函数customMultiSelect(pDiv、pOptions、inputID、currentSelected)
{        
这个.Div=pDiv;
this.options=pOptions;
这个;
for(var idxOption=0;idxOption1){
sText=arrTemp2[1];
}
checkbox.value=arrTemp2[0];
checkbox.id=inputID+“|”+idxOption;
checkbox.checked=true;
var textLabel=document.createElement(“标签”);
textLabel.appendChild(复选框);
textlab.innerHTML+=arrTemp2[1];
textlab.style.display=“块”;
textLabel.style.clear=“右”;
}
this.Div.appendChild(textLabel);
}
}

只需将checked属性改为checkbox。checked=true;:

checkbox.setAttribute('checked', true);

您的问题是因为您使用
textlab.innerHTML+=arrTemp2[1]以便重写和解析HTML。在此之前,您使用的
checkbox.checked=true
仅操作DOM属性,而在HTML中它仅是
,因此结果是
textLabel.innerHTML=''+arrTemp2[1],再次显示未选中的复选框

您应该使用
checkbox.setAttribute('checked','checked')
,那么HTML将是
,在这种情况下
textlab.innerHTML+=arrTemp2[1]
equals
textlab.innerHTML=''+arrTemp2[1]


关于HTML属性和DOM属性之间的区别:

setAttribute
实际操作HTML属性。如果未设置DOM属性,则该属性将填充到该属性中。但是,当设置属性时,“更改属性”不会影响该属性。例如,您有一个输入标记:

<input type="text" value="asdf">
当你改变它的属性时

document.querySelector('input').setAttribute('value', 'zxcv')
您不会在页面中看到任何更改,因为
document.querySelector('input')。value
仍然是“qwer”。更改实际上发生在HTML中,打开devtool,您将看到:

<input type="text" value="zxcv">


最后,提交表单时发出的是DOM属性,而不是属性。

如果不起作用,对象不支持该属性您使用的浏览器是什么?Internet explorer和兼容模式处于启用状态
<input type="text" value="zxcv">