在ie10中以编程方式设置复选框选中属性

Programmatically setting checkbox checked attribute in IE 10

本文关键字:复选框 设置 属性 编程 ie10 方式      更新时间:2023-09-26

我有一个遗留页面,它使用了大量的原始javascript(没有JS库隐藏浏览器差异)。它动态地创建一个复选框,如下所示:

function createCheckbox(checkboxName, isChecked, onClickHandler)
{
    var checkboxId = checkboxName + 'ChkBx';
    var chkbx;
    if(Ext.isIE)
    {
        // Following code does not work in IE10 when NOT using compatibility view
        // Throws JS error.  Worked in IE9.
        //if (isChecked)
        //{
        //    chkbx = document.createElement('<input id="' + checkboxId + '" type="checkbox" name="' + checkboxName + '" value="true" checked="checked" className="checkbox" />');
        //}
        //else
        //{
        //    chkbx = document.createElement('<input id="' + checkboxId + '" type="checkbox" name="' + checkboxName + '" value="true" className="checkbox" />');
        //}
        // Following code does not work in IE10 when using compatibility view
        // isChecked == true does not product checked checkbox
        chkbx = document.createElement('input');
        chkbx.id = checkboxId;
        chkbx.name = checkboxName;
        chkbx.value = 'true';
        chkbx.type = 'checkbox';
        chkbx.checked = isChecked;
        chkbx.className = 'checkbox';
    }
    else 
    { ... }
    return chkbx;    
}

我知道在IE10中,createElement()不再接受详细的字符串参数。这就是为什么我改变了上面的代码。我不明白的是为什么,它不尊重我设置checked属性为true?还应该如何指示复选框应该被选中呢?

add

chkbx.defaultChecked = isChecked;

问题解决了。

当使用兼容性视图时,IE10可能会退回到IE7的做事方式。(取决于你的设置)

来源:使用Javascript的IE7不会检查复选框,但没有错误

用IE 10.0.9200.16519测试