繁体   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