2016-05-13 19 views
-1

我有幾個問題,下面的代碼。任何人都可以幫忙嗎?Javascript無法控制出方法

  1. getStatusUsingAjax方法中的if(currentStatus!=「undefined」)塊不起作用。
  2. 無法得到控制了getStatusUsingAjax方法

$(document).ready(
 
    loadStatus() 
 

 
); 
 

 
function loadStatus(x) { 
 

 
    $('.a-IRR-table tr').each(function(i) { 
 
      var val = $(this).find("td").eq(0).text(); 
 
      link = $(this).find("td").eq(0).find("a").attr("href"); 
 
      linkTag = $(this).find("td").eq(0).find("a"); 
 

 
      `if ((val !== "-") && (val !== "")) { 
 
      console.log("val is" + val); 
 
      if (verifyrequestArray(val)) { 
 
      console.log("inside second if"); 
 

 
      } else { 
 
      console.log("inside else"); 
 
      sleep(1.5 * 1000); 
 
      var updatedStatus2 = getStatusUsingAjax(val, link); 
 
      console.log("UpdatedStatus2 is " + updatedStatus2); 
 
      setTooltip(linkTag, updatedStatus2); 
 
      } 
 

 

 

 
     } 
 
     }); 
 

 
    } 
 

 
     function verifyrequestArray(id) { 
 

 
     var newArray = requestArray.toString().split('-'); 
 
     console.log("NewArray is :" + newArray); 
 
     for (i = 0; i < newArray.length; i++) { 
 
     // I'm looking for the index i, when the condition is true 
 
     if (newArray[i] === id) { 
 
      console.log("request id found" + newArray[i]); 
 
      break; 
 
     } else { 
 
      console.log("request id not found" + newArray[i]); 
 
      return false; 
 
     } 
 
     } 
 
    } 
 

 

 

 
     function getStatusUsingAjax(requestValue, currentlink) { 
 

 
     console.log("patch req: " + requestValue); 
 
     console.log("Link is " + currentlink); 
 
     var currentStatus; 
 
     GM_xmlhttpRequest({ 
 
     method: "GET", 
 
     url: currentlink, 
 
     onload: function(response) { 
 

 
      if ($(response.responseText).find("#P16_STATUS2").size() === 1) { 
 
      currentStatus = $(response.responseText).find("#P16_STATUS2").text(); 
 
      console.log("Current Status from #P16_STATUS2 is :" + currentStatus); 
 
      console.log("Final URL is " + response.finalUrl); 
 
      } 
 

 

 
     } 
 

 
     }); 
 
     // console.log("Final URL is " +response.finalUrl); 
 

 
     if (currentStatus != "undefined") { 
 

 
     var pusharr = [requestValue + "-" + currentStatus]; 
 
     requestArray.push(pusharr); 
 
     console.log("Updated Array is " + requestArray); 
 
     return currentStatus; 
 
     } 
 
    } 
 

 
     function setTooltip(currentTag, status2) { 
 
     console.log("in settooltip" + currentTag); 
 
     currentTag.attr("title", status2); //setting status a tooltip 
 
    }

的任何線索,其中的錯誤是什麼?

+0

語句:if (currentStatus!=「undefined」) 不在函數getStatusUsingAjax()中。 (typeof currentStatus!=「undefined」) –

+0

正確的縮進可能會有幫助 –

+0

@ Igor Vujovic,感謝您尋找typeof currentStatus!=「undefined」的code.usage)解決了問題。if(currentStatus!=「undefined」)塊在getStatusUsingAjax()方法中很好。但是我仍然無法在執行一次之後將控制權移出。 – RNimmagadda

回答

0

FN getStatusUsingAjax是異步,使用你不能得到返回值:

var updatedStatus2 = getStatusUsingAjax(val, link); 

您sholud創建回調:

function getStatusUsingAjax(val, link, callback){ 
//... 
// do not use return currentStatus, call calback fn instead 
callback(currentStatus) 
} 

,並使用調用它:

getStatusUsingAjax(val, link, function(updatedStatus2){ 
    console.log("UpdatedStatus2 is " + updatedStatus2); 
    setTooltip(linkTag, updatedStatus2); 
}); 
+0

也創建回調後,控制不會出現getStatusUsingAjax方法。執行一次之後,我希望控制回到if if((val!==「 - 」)&&(val!==「」))的塊中。但是目前getStatusUsingAjax正在連續執行所有值 – RNimmagadda