我有一个遗留页面,它使用大量原始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?如何指出应该检查复选框?
答案 0 :(得分:2)
添加
chkbx.defaultChecked = isChecked;
问题解决了。
使用兼容性视图时,IE10可以回退到IE7的处理方式。 (取决于您的设置)
来源:Checkboxes will not check in IE7 using Javascript, and yet no errors
使用IE 10.0.9200.16519进行测试