我有一个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
答案 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的类..