下面是我的代码:
Cell.setAttribute('type', 'checkbox');
Cell.setAttribute('name', "Size");
根据条件我会设置一些值来检查'并且'禁用'。
Cell.setAttribute('checked', 'true');
Cell.setAttribute('disabled', 'true');
此处'尺寸'包含一些禁用的值,未经检查和检查。
因此,每当我尝试检索已检查的值时,默认为禁用 复选框也正在退回。
我只想要检查值;不是SelectedDetails方法中禁用的已检查值:
var testCaseArray =[];
var checkbox = document.getElementsByName('Size');
for(var i=0; i<checkbox.length; i++){
if(checkbox[i].checked){
testCaseArray.push(checkbox[i].value);
}
}
return testCaseArray;
答案 0 :(得分:1)
将系列中已检查的所有复选框元素(已禁用的复选框除外)检索到Array
:
var chkd = [].slice.call(document.querySelectorAll('input:checked'))
.filter(function(e) {
return null == e.getAttribute('disabled');
});
您还可以使用此选择器检索具有相同选择的类似数组的列表:
document.querySelectorAll('input:checked:not(disabled)')
答案 1 :(得分:0)
您需要添加禁用检查,以及检查其是否正在检查
var testCaseArray =[];
var checkbox = document.getElementsByName('Size');
for(var i=0; i<checkbox.length; i++){
if(checkbox[i].disabled){
continue;
}
if(checkbox[i].checked){
testCaseArray.push(checkbox[i].value);
}
}
return testCaseArray;
答案 2 :(得分:0)
从JavaScript has short-circuit evaluation开始,只需将条件添加到if
语句中:
var testCaseArray = [],
checkbox = document.getElementsByName('Size');
for (var i = 0; i < checkbox.length; ++i) {
if (!checkbox[i].disabled && checkbox[i].checked) {
testCaseArray.push(checkbox[i].value);
}
}
return testCaseArray;
如果!checkbox[i].disabled
返回false,JavaScript引擎将自动停止评估。