1

大量の未加工の 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に設定しても尊重されないのですか? チェックボックスをオンにする必要があることを示すには、他にどのようにすればよいでしょうか?

4

1 に答える 1