js遍历数组

代码中k是有值的, 但是在数组下标里的k却是underfined, 这什么问题? 我用的火狐
重新贴图

兄台,如果我没看错,你的 boxes[k] 应该是一个<input type="checkbox"/>

那么问题来了。 input[checkbox]的默认value你肯定是没有赋值吧??


我看你这个功能应该是多选删除吧? 

你可以在每一个复选框input[checkbox]绑定一个你要删除的id(就是主键之类的了,反正后端能区分,或者你能辨别的就行了)

绑定的方式有很多种了,你可以用attribute(当然也可以用别的)


给你举个例子吧 

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<ul>
<li>
<input type="checkbox" name="id[]" id="1"/>
id是1
</li>
<li>
<input type="checkbox" name="id[]" id="2"/>
id是2
</li>
<li>
<input type="checkbox" name="id[]" id="3"/>
id是3
</li>
<li>
<input type="checkbox" name="id[]"id="4"/>
id是4
</li>
<li>
<input type="checkbox" name="id[]" id="5"/>
id是5
</li>
</ul>
<button>删除选中</button>
<script type="text/javascript">
var btn = document.getElementsByTagName('button')[0];

function DelSelectDemo() {
var boxes = document.getElementsByName('id[]');
var checkVal = [];

for (var key in boxes) {
if (boxes[key].checked) {
checkVal.push(boxes[key].getAttribute('id'));
}
}

alert(checkVal)
}

btn.addEventListener('click', DelSelectDemo, false);
</script>
</body>
</html>

追问

这是jsp上的

绑定id太麻烦,感觉也多余啊。。因为这

for (var k in boxes) {

                    if (boxes[k].checked)

boxes[k]我获取到的是对象,没有具体值

追答<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<ul>
<li>
<input type="checkbox" name="id[]"  value="1"/>
id是1
</li>
<li>
<input type="checkbox" name="id[]"  value="2"/>
id是2
</li>
<li>
<input type="checkbox" name="id[]"  value="3"/>
id是3
</li>
<li>
<input type="checkbox" name="id[]" value="4"/>
id是4
</li>
<li>
<input type="checkbox" name="id[]"  value="5"/>
id是5
</li>
</ul>
<button>删除选中</button>
<script type="text/javascript">
var btn = document.getElementsByTagName('button')[0];

function DelSelectDemo() {
var boxes = document.getElementsByName('id[]');
var checkVal = [];

for (var key in boxes) {
if (boxes[key].checked) {
checkVal.push(boxes[key].value);
}
}

alert(checkVal)
}

btn.addEventListener('click', DelSelectDemo, false);
</script>
</body>
</html>


兄弟你最好是在浏览器里看下渲染好的代码。可能是java遍历出来的typesAll.id 不存在


追问

typesAll.id存在。其实我后台已经可以批量删除了,只是页面上还是有显示值,需要刷新页面才好!

这下面是完整的这个js方法

同样的在  boxes[index] 一样也是对象,没有值呢。。。

boxes[index]这种写法会有兼容上的问题吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-09
你要么这么写
for(k=0;k<boxes.length;k++){
        if(boxes[k].checked){
}
}
要么
for(k in boxes){
        if(k.checked){
}
}

第2个回答  2017-01-09
没有看到underfined啊
我感觉可以啊,在循环里面alert(k)能不能看到k值
相似回答