javascript if for循环中的语句没有找到==

时间:2012-09-12 22:13:49

标签: javascript jquery if-statement for-loop

我有一个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");
   };
};

在循环中的某一点,控制台显示元素相同,但不会弹出警报。 CONSOLE:

<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

3 个答案:

答案 0 :(得分:1)

divid是一个jQuery对象。它永远不会匹配另一个变量,除非该变量指向完全相同的jQuery对象。 =====比较对象引用以查看它们是否完全相同。它不会比较这些对象的内容。

如果epid是一个DOM对象,并且代码的要点是比较DOM对象,那么对.get(i) [i]使用.eq(i)epid而不是divid }和var divid = $('#slideshow > div').get(i);

epid

假设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"); } } 是一个DOM对象,并且您正在寻找幻灯片中哪个项目与该对象匹配,那么您可以使用更加高效和正确的代码:

epid

如果您只是想知道幻灯片集合中的索引for,那么您不需要var index = $('#slideshow > div').index(epid); 循环来手动查找它 - 您可以这样做:

{{1}}

答案 1 :(得分:0)

我假设您要从代码中比较元素的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");
   };
};

答案 2 :(得分:0)

你在这里比较两个对象..如果是完全相同的对象,那将是真的。所以,而不是==使用===。还假设如果每个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的类..