获取javascript动态创建控件状态

时间:2013-02-28 09:05:50

标签: javascript asp.net html

我正在动态地向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?我测试了它,但又没有运气!如何知道我的复选框是经过检查还是知道?

2 个答案:

答案 0 :(得分:2)

您正在做的是在spanCheck上添加click事件并检查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);

另一件事,你不应该在跨度上附加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');
    };

答案 1 :(得分:1)

在您的代码中,spanCheck不会呈现为复选框。它包含一个复选框。因此,没有这样的属性spanCheck.checked。然而, spanCheck.children[0].checked属性。