2016-05-13 21 views
-1

Im folgenden Code wird nicht jede Schleife ausgeführt. Code über und unter der Schleife wird ausgeführt. Unfähig, den Grund herauszufinden.

GM_xmlhttpRequest({ 
 
    method: "GET", 
 
    url: link, 
 
    synchronous: true, 
 
    onload: function(response) { 
 

 
    //console.log($(response.responseText).find("#P16_STATUS2").text()); 
 
    var status = "NOT FOUND"; 
 
    if ($(response.responseText).find("#P16_STATUS2").size() === 1) { 
 
     status = $(response.responseText).find("#P16_STATUS2").text(); 
 
     console.log("Status is " + status); 
 
    } else if ($(response.responseText).find("#P16_STATUS3").size() === 1) { 
 
     status = $(response.responseText).find("#P16_STATUS3").val(); 
 
     console.log("Status is " + status); 
 
    } 
 
    alert("one"); 
 
    //for (var i = 0; i < requestArray.length; i++) {  
 
    $.each(requestArray, function(key, value) { 
 
     alert("in each"); 
 
     console.log("inside for"); 
 
     if (key === val) { 
 
     console.log("request id found already present in array"); 
 
     return false; // <=== breaks out of the loop early 
 
     } else { 
 
     console.log("request id not found, Hence adding" + newArray[i]); 
 
     var pusharr = [val + "-" + status]; 
 
     requestArray.push(pusharr); 
 
     console.log("Updated Array is " + requestArray); 
 
     } 
 
    }); 
 

 

 
    alert("out"); 
 
    linkTag.attr("title", status); 
 

 
    } 
 
});

Jede Hilfe ist sehr geschätzt.

+2

Woher kommt requestArray? Ich vermute, dass es leer oder undefiniert ist. – n8wrl

+0

Nicht verwandt: 'return false; // <=== bricht früh aus der Schleife heraus, was nicht so funktioniert, wie Sie annehmen. – dan08

+0

für die Funktionalität, die Sie anstreben, würde die ursprüngliche for-Schleife besser funktionieren. –

Antwort

1

Stellen Sie sicher, dass requestArray nicht leer ist. jQuery führt nicht jede Funktion für ein leeres Objekt/Array aus.