获取javascript动态创建的控件状态

get javascript dynimcally created control state

本文关键字:控件状态 创建 动态 javascript 获取      更新时间:2023-09-26

我动态地添加一些行到我的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);

我正在为这个span添加一个onclick函数(它被渲染为一个复选框),我想知道它什么时候被选中,但是if (spanCheck.checked)不起作用,我总是在我的警报中得到"未检查",这里出了什么问题?我应该使用spanCheck吗?还是我应该用document.getElementById(spanCheck.id).checked ?我已经测试过了,但还是没有运气!我如何知道我的复选框是否被选中或知道?

你正在做的是在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);

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

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