我需要编写一些代码来循环遍历表的所有行,然后检查每行中的隐藏输入以查看它是否包含某个值,如果是,则设置一些值并隐藏该行。它可能很笨拙,但它有效:(变量“zeile”包含第一行,在循环之前正确初始化):
while (goon) {
var hf = zeile.attr('id');
if (hf) {
hf = document.getElementById(hf.substr(0,hf.length-2) + 'hfMat');
if (hf.value == mid) {
found=true;
goon=false;
zeile.hide();
} else {
cnt +=1 ;
if (cnt<10) {
alert('not found, cnt=' + cnt);
} else {
goon=false;
}
}
}
if (goon) {
zeile = zeile.next('tr');
goon=zeile.length>0;
}
}
好的,首先,第 4 行document.getElementById(hf...)
看起来像是承认失败,它可能是 - 但$("#"+hf).val()
就是不会这样做,返回 undefined :(
正如我所说,这段代码工作正常。但是后来我遇到了一个情况,其中两行在 hfMat 字段中包含相同的值,然后我的脚本将再次隐藏第一行,而它应该继续到第二行。“简单”,我想,并改进了语句以确定要处理的下一行(从末尾开始的第 4 行),所以我从 更改zeile = zeile.next('tr');
为zeile = zeile.next('tr:visible');
但是,使用 jQuery 1.3.2,这不起作用,我得到未定义。我究竟做错了什么?
当然,必须有一种更好的方法来完成这个选择,而不会出现这种混乱的循环,只需使用 jQuery 的一些更高级的机制,但恐怕这些都超出了我的能力范围。但我很乐意看到一些想法;)