0

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">​…​&lt;/div>​
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​&lt;/div>​
blah
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​&lt;/div>​
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​&lt;/div>​
blah
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep7">​…​&lt;/div>​
<div style=​"height:​ 100%;​ display:​ none;​ " id=​"ep6">​…​&lt;/div>​
blah
4

3 に答える 3

1

dividjQuery オブジェクトです。その変数がまったく同じ jQuery オブジェクトを指していない限り、別の変数と一致することはありません。 ==または、===オブジェクト参照を比較して、それらがまったく同じオブジェクトであるかどうかを確認します。これらのオブジェクトの内容は比較されません。

epid が DOM オブジェクトであり、コードの要点が DOM オブジェクトを比較することである場合、 andの両方に対してorの代わりに.get(i)orを使用する必要があります。[i].eq(i)epiddivid

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);
于 2012-09-12T22:14:51.883 に答える
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");
   };
};
于 2012-09-12T22:17:01.057 に答える
0

ここで2つのオブジェクトを比較しています.. がまったく同じオブジェクトである場合にのみ真になります.. 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 に固有のクラスです。

于 2012-09-12T22:40:08.023 に答える