• 締切済み

xmlを読み込んで順不同の検索を行いたい

配列を検索対象として検索する処理を行いたいのですが、方法が分からなくて困っています。 下記のような例があった場合で、 <「listA」に含まれるテキスト>のうち、配列と一致したものをhtmlに記述し、配列の最後まで処理をしたいのですが、 eachでは当然頭から順処理なので以下例だと3番目しか表示されないことになります。 全部記述したいのですがどうしたらよいのでしょうか。 **xml <listlist> <listA>aa2</listA><listB>bbb</listB><listC>ccc</listC><listD>ddd</listD> </listlist> <listlist> <listA>aa3</listA><listB>bbb</listB><listC>ccc</listC><listD>ddd</listD> </listlist> <listlist> <listA>aaa</listA><listB>bbb</listB><listC>ccc</listC><listD>ddd</listD> </listlist> **javascript var x=("aaa","aa2","aa3");var y=0; $(document).ready(function(){ $.ajax({url: aaaa.xml',type: 'GET',dataType: 'xml',timeout: 100000,error: function(){alert('xmlファイルの読み込みに失敗しました');}, success: function(xml){ $(xml).find("listlist").each(function(){ if($(this).find("listA")==x[y]){ htmlに記述処理; y++; } });});});

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

よくわかってませんが… 1)>以下例だと3番目しか表示されないことになります  eachのせいではなくて、xの定義がカンマ演算子になっているので、  x="aa3"と解釈されているからでは?  それなので、x[y]の値はundefinedになったり、"a"になったりブラウザによって異なる… 2)$(this).find("listA")って要素を返すと思うのですが(複数の可能性もある)  比較演算は常にfalseなのでは? 3)y++の実行タイミングを見るとeachの実行ごとに増えていくので、ご質問の  検索になっていないのでは?  それに、yの値は増加し続けるけれど、それに対応するx[y]の値が存在しない 4)そもそもlistAのテキストを調べたいのであれば、listlistを探す必要はなさそうな…  直接 listAの配列に対して処理をしてしまうのではだめなのでしょうか?  (直接は取得できないんでしたっけ?) 斜め読みしただけなので、違っているかもですが…

picicate
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう