2016-05-26 42 views
0

爲什麼這兩行代碼之間的差異會導致jQuery在iOS(Safari和Chrome)中無限循環的錯誤?該循環在任何其他瀏覽器中都不會發生。iOS中的jQuery循環錯誤

if ($('[name="loadingTime"]') != undefined) {... 

VS

if ($('.loadingTime') != undefined) {... 

當我們通過類的目標,而不是name屬性的循環錯誤就走開了。任何想法或解釋?

+1

你的循環是什麼? –

+3

請注意,$('。loadingTime')'或'$('[name =「loadingTime」]')'永遠不會被定義爲'undefined',jQuery總是返回一個對象。 – Teemu

+1

判斷jQuery選擇器是否匹配任何東西的方法是檢查它的長度:'if($('[name =「loadingTime」]').length!= 0)' – Barmar

回答

1

經過進一步調查發現該錯誤是在代碼的另一部分。事情是這樣的:

loadInterval: function() { 
    var settimer = $('[name="loadingTime]').val(); 
    var interval = setInterval(function() { 
    if (settimer == 0) { 
     window.clearInterval(interval); 
     $('[id^="interstitial-container"]').remove(); 
    }; 
    settimer--; 
    if (settimer >= 0) { 
     $('.ncount').text(settimer); 
    } 
    }, 1000); 
} 

var settimer = $('[name="loadingTime]').val(); 

我們錯過了結束引號後loadingTime!其中js未定義返回,並且iOS沒有正常處理它var settimer未設置爲零,因此無論何時該函數調用loadInterval,它都是未定義的,我們檢查是否需要基於undefined加載或不加載。在我們的情況下,它不是並繼續加載總是得到未定義的響應,但沒有錯誤。我認爲...