Javascript 可导航表中的筛选行
更新: 我终于找到了一个解决方案(在下面的代码中有一个while循环),但有一个问题:当我导航搜索结果(所以没有隐藏的元素)时,在过滤结果中导航一点后,导航停止工作,我得到一个“TypeError:rows[selectedRow]未定义”Javascript 可导航表中的筛选行,javascript,html,Javascript,Html,更新: 我终于找到了一个解决方案(在下面的代码中有一个while循环),但有一个问题:当我导航搜索结果(所以没有隐藏的元素)时,在过滤结果中导航一点后,导航停止工作,我得到一个“TypeError:rows[selectedRow]未定义” if(selectedRow>=rows.length){ selectedRow=0; }如果为else(已选择Row考虑下面的代码块: while(rows[selectedRow].style.display == "none"){ sele
if(selectedRow>=rows.length){
selectedRow=0;
}如果为else(已选择Row<0){
selectedRow=rows.length-1;
}
您的筛选函数似乎隐藏了与您输入的字符串不匹配的行。隐藏是通过将display属性设置为“none”来实现的
导航时,不能忽略显示属性设置为“无”的表行吗
更新:您可以在执行行[selectedRow].style之前检查行[selectedRow].style.display的值。如果该值为“none”
,则在函数中重复对selectedRow
所做的更改(无论是递增还是递减)
<强>更新2:< /强>考虑下面的代码块:
while(rows[selectedRow].style.display == "none"){
selectedRow++;
}
如果进入while循环时selectedRow
的值为0
且行[0]。style.display
的值为“none”
,则循环体将selectedRow
的值更改为-1。控件将立即返回到循环保护,并尝试检查
行[-1]。样式。显示
。这是您想要避免的,那么为什么不在每一行更改后检查selectedRow
?快速解决方案包括更改while循环的循环体:
while(rows[selectedRow].style.display == "none"){
selectedRow++;
if(selectedRow >= rows.length){
selectedRow = 0;
}
}
及
while(行[selectedRow].style.display==“无”){
selectedRow--;
if(selectedRow<0){
selectedRow=rows.length-1;
}
}
如果它对你有用,考虑一下投票还是接受答案?我说:“这就是我要做的,但我找不到该怎么做。”我还需要计算“真实”行号,因为当我按enter键时,Ajax会将一个值发送到php文件@Kartik sabharwal。据我所知,我的更新将selectedRow
的值与“真实”行号保持一致。谢谢你,我找到了一个解决方案,多亏了你,但现在我面临另一个问题(所有内容都在我的更新中)。你能帮我解决这个问题,让我的搜索菜单正常工作吗?
while(rows[selectedRow].style.display == "none"){
selectedRow--;
if(selectedRow < 0){
selectedRow = rows.length-1;
}
}