0

ASP.NET テーブルにいくつかの行を動的に追加しています。各行にいくつかのセルがあり、各セルには動的に作成されるコントロールが含まれています。

            var TD = document.createElement('td');
        var spanCheck = document.createElement("span");
        spanCheck.innerHTML = "<input type='checkbox' name='vehicle' value='Car'>mycheck";
        spanCheck.id = "newfoodcheck0";
        spanCheck.onclick = function () {

            if (spanCheck.checked)
                alert('checked');
            else
                alert('unchecked');
        };

        TD.appendChild(spanCheck);

このスパン (チェックボックスとしてレンダリングされる) に onclick 関数を追加しています。チェックされていることを知りたいのですが、if (spanCheck.checked)機能せず、アラートで常に「チェックされていません」と表示されます。ここで何が問題になっていますか? spanCheck.checked を使用する必要がありますdocument.getElementById(spanCheck.id).checkedか? 私はそれをテストしましたが、再び運がありません! チェックボックスがチェックされているかどうかを知るにはどうすればよいですか?

4

2 に答える 2

2

あなたがしていることは、spanCheck にクリック イベントを追加し、spanCheck.checked をチェックすることです。ただし、checked プロパティは、spanCheck の子である入力要素にあります。次のようにしたいかもしれません:

var TD = document.createElement('td');
    var spanCheck = document.createElement("span");
    spanCheck.innerHTML = "<input id='my_input' type='checkbox' name='vehicle' value='Car'>mycheck";
    spanCheck.id = "newfoodcheck0";
    spanCheck.onclick = function () {
            var input = document.getElementById('my_input');
            if (input.checked)
                alert('checked');
            else
                alert('unchecked');
        };

また、TDを体内に挿入していないと思います。したがって、最後の行では、appendChild を使用する必要があります。

TD.appendChild(spanCheck);    
document.body.appendChild(TD);

もう1つ、スパンにonclickイベントを添付しないでください。入力要素に同じものを添付する必要があります。次のコードは同じことをしています:

var TD = document.createElement('td');
    var spanCheck = document.createElement("span");
    spanCheck.innerHTML = "<input id='my_input' type='checkbox' name='vehicle' value='Car'>mycheck";
    spanCheck.id = "newfoodcheck0";

    TD.appendChild(spanCheck);
    document.body.appendChild(TD);
    var input = document.getElementById('my_input');

    input.onclick = function () {
        if (input.checked)
            alert('checked');
        else
            alert('unchecked');
    };
于 2013-02-28T09:24:37.980 に答える
1

コードでspanCheckは、チェックボックスとしてレンダリングされません。チェックボックスが含まれています。したがって、そのようなプロパティはありませんspanCheck.checked。ただし、プロパティがあります。spanCheck.children[0].checked

于 2013-02-28T09:09:57.870 に答える