当我的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
}
});
&#13;
我的代码中有什么问题?
答案 0 :(得分:2)
你的循环无限期地运行。我发现你的代码有些问题。
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。你需要做一些事情(我不确定你要完成什么)到填充。我假设评论//do shifting here
是为了调整填充。实现它和我的上述建议应该可以解决你的问题。
答案 1 :(得分:0)
浏览器在您单击按钮后继续执行while循环,因为您的中断条件未得到满足。因此它变得没有回应。