簡體   English   中英

JavaScript for循環中的if語句找不到==

[英]javascript if statement in for loop not finding ==

我有一個for循環,對控制台的跟蹤顯示我的變量正確。 epid由另一種方法確定。

 for (var i=0; i< $('#slideshow > div').length; i++) {
   var divid = $('#slideshow > div').eq(i);
   console.log(divid)
   console.log(epid)
   if ( divid == epid ) {
    alert("equal " + epid);
   } else {
    console.log("blah");
   };
};

在循環的某一時刻,控制台顯示該元素相同,但是沒有彈出警報。 安慰:

<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep5">​…​</div>​
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​</div>​
blah
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​</div>​
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​</div>​
blah
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep7">​…​</div>​
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​</div>​
blah

divid是一個jQuery對象。 除非該變量指向完全相同的jQuery對象,否則它將永遠不會匹配另一個變量。 =====比較對象引用以查看它們是否完全相同。 它不比較那些對象的內容。

如果epid是DOM對象,並且代碼的重點是比較DOM對象,那么對於epiddivid ,都應使用.get(i)[i]而不是.eq(i)

var divid = $('#slideshow > div').get(i);

假設epid是DOM對象,並且您正在尋找幻燈片中的哪個項目與該對象匹配,那么您可以擁有效率更高,更正確的代碼,如下所示:

var items = $('#slideshow > div');
for (var i = 0; i < items.length; i++) {
    var divid = items[i];
    if ( divid === epid ) {
        alert("equal " + epid);
    } else {
        console.log("blah");
    }
}

如果你只是想知道什么是指數epid是幻燈片集合中,你不需要for循環手動找到它-你可以是這樣做的:

var index = $('#slideshow > div').index(epid);

我假設您想從您的代碼中比較元素的HTML?

 for (var i=0; i< $('#slideshow > div').length; i++) {
   var divid = $('#slideshow > div').eq(i);
   console.log(divid)
   console.log(epid)
   if ( divid.html() == epid.html()) {
    alert("equal " + epid);
   } else {
    console.log("blah");
   };
};

您在此處比較兩個對象。.僅當完全相同的對象時才是true。.SO而不是==使用===。 還假設如果每個div都有一個id,則可以比較它的id屬性。

for (var i=0; i< $('#slideshow > div').length; i++) {
   var divid = $('#slideshow > div').eq(i);
   var dID = divid.attr('id');
   var eID = epid.attr('id');
   console.log(divid);
   console.log(epid);
   if(dID != ''  && eID != ''){
       if ( dID == eID ) {
          alert("equal " + epid);
       } else {
         console.log("blah");
       };
    }
};

僅當div已經有一個ID時才有效。或者每個div都有一個特定的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM