在while循环JavaScript中添加元素

时间:2017-09-27 22:53:58

标签: javascript jquery greasemonkey

我正在尝试创建一个包含两个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);
    }
  }
}

2 个答案:

答案 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();

希望这会对你有所帮助。