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