Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可导航表中的筛选行_Javascript_Html - Fatal编程技术网

Javascript 可导航表中的筛选行

Javascript 可导航表中的筛选行,javascript,html,Javascript,Html,更新: 我终于找到了一个解决方案(在下面的代码中有一个while循环),但有一个问题:当我导航搜索结果(所以没有隐藏的元素)时,在过滤结果中导航一点后,导航停止工作,我得到一个“TypeError:rows[selectedRow]未定义” if(selectedRow>=rows.length){ selectedRow=0; }如果为else(已选择Row考虑下面的代码块: while(rows[selectedRow].style.display == "none"){ sele

更新: 我终于找到了一个解决方案(在下面的代码中有一个while循环),但有一个问题:当我导航搜索结果(所以没有隐藏的元素)时,在过滤结果中导航一点后,导航停止工作,我得到一个“TypeError:rows[selectedRow]未定义”

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;
    }
}