当我的 while 循环工作时,我的页面变得无响应
$(".hidebutton").click(function () {
var parented = $(".selected").data("id");
var currentid = parented + 1;
while(true)
{
var chiledtrleft = $("tr[data-id='" + currentid + "']> td:first-child").css("padding-left");
var parentleft = $("tr[data-id='" + parented + "']> td:first-child").css("padding-left");
if (chiledtrleft <= parentleft) {
break;
}
$("tr[data-id='" + currentid + "']> td:first-child").hide();
// do shifting here
}
});
我的代码有什么问题?
最佳答案
您的循环无限期地运行。我发现您的代码有一些问题。
var chiledtrleft = $("tr[data-id='" + currentid + "']> td:first-child").css("padding-left");
var parentleft = $("tr[data-id='" + parented + "']> td:first-child").css("padding-left");
这些行将返回看起来像“10px”的字符串,而不是像“10”这样的整数。如果您想比较它们,您需要使用函数 parseInt
解析 int。
您的代码将进行词法比较(按字母顺序),我怀疑这是您的 if 语句失败的部分原因。您可以像这样修复此问题:
var chiledtrleft = parseInt($("tr[data-id='" + currentid + "']> td:first-child").css("padding-left"));
var parentleft = parseInt($("tr[data-id='" + parented + "']> td:first-child").css("padding-left"));
此外,您实际上并没有对循环中的填充执行任何操作。如果条件评估为 false,它将无限期地继续评估为 false。你需要对填充做一些事情(我不确定你想要完成什么)。我假设注释 //doshiftinghere
是为了调整填充。实现该建议和我的上述建议应该可以修复您的循环。
关于javascript - while 循环工作时页面变得无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38670964/