我正在尝试创建一个包含两个if语句的while循环,我不希望在这些语句完成之前增加。我将如何解决此问题,现在当我实现while循环时页面冻结。
var task = 0;
while(task < 3) {
//Enter the title and url and add it to site
if(window.location.href.indexOf("website.com") > -1) {
$("input[name=Title]").val(GM_getValue("title" + task));
$("input[name=SvURL-1]").val(GM_getValue("url" + task));
$( 'button[name=submit]' ).click();
}
//Enters the imdbid to the stream
if(window.location.href.indexOf("anotherwebsite.com") > -1) {
console.log($("input[name=EmbedID]").val());
console.log(GM_getValue("imdid" + task));
if ($("input[name=EmbedID]").val() != GM_getValue("imdid" + task)) {
$( "a[data-target=#EditURL]" ).click();
$("input[name=EmbedID]").attr("value", GM_getValue("imdid" + task));
setTimeout(function(){
$( 'button:contains("Ok")' ).click();
}, 1000);
setTimeout(function(){
$( 'button[name=submit]' ).click();
}, 1000);
} else {
setTimeout(function(){
window.location.replace("https://website.com");
}, 1000);
task++;
alert("task when done: " + task);
}
}
}
答案 0 :(得分:0)
我可以看到,只有在满足某个条件时才会增加变量任务。但是由于你在while循环中,如果变量 task 没有满足任何条件,那么while循环将不会退出。因此解释了冻结页面。
你可以做的是这样的事情:
var flag = false;
var task = 0;
while (task < 3) {
if (condition) {
// some code here...
}
if (condition) {
if (condition) {
// some code here...
} else {
// some code here...
flag = true;
}
}
task++;
}
if (flag) {
// do something here...
}
答案 1 :(得分:0)
我宁愿建议使用方法&amp;打电话给方法。
像这样的东西
var task = 0;
var taskMethod = function(){
//Enter the title and url and add it to site
if(window.location.href.indexOf("website.com") > -1) {
$("input[name=Title]").val(GM_getValue("title" + task));
$("input[name=SvURL-1]").val(GM_getValue("url" + task));
$( 'button[name=submit]' ).click();
}
//Enters the imdbid to the stream
if(window.location.href.indexOf("anotherwebsite.com") > -1) {
console.log($("input[name=EmbedID]").val());
console.log(GM_getValue("imdid" + task));
if ($("input[name=EmbedID]").val() != GM_getValue("imdid" + task)) {
$( "a[data-target=#EditURL]" ).click();
$("input[name=EmbedID]").attr("value", GM_getValue("imdid" + task));
setTimeout(function(){ $( 'button:contains("Ok")' ).click();}, 1000);
setTimeout(function(){ $( 'button[name=submit]' ).click();}, 1000);
} else {
setTimeout(function(){ window.location.replace("https://website.com");}, 1000);
task++;
console.log("task when done: " + task);
if(task < 3)
taskMethod();
}
}
}
//Initial (First Time) method call
taskMethod();
希望这会对你有所帮助。