以下のJSコードを実行すると表題のエラーが返されます。
コード内で使用しているcloning()の返り値は以下です。
HTML
1<div class="hotel"> 2<div class="hotelpics"> 3<div class="image"></div> 4</div> 5<div class="hotelinfo"> 6<h2 class="hotelname"></h2> 7<div class="tags"></div> 8<div class="rating"></div> 9<div class="price"></div> 10</div> 11</div>
このタグに値を埋め込みappend()をしてHTMLの情報を変更するプログラムです。
(evaluating 'hotelClones[index].find')
実行すると上記のように返ってくるので、JSコード内のhotelClonesの配列の使い方、変数宣言等が使い方が間違えていると思うのですがどう修正すれば良いですか。
JS
1 var hotelClones = []; 2 var hotelName = null; 3 var hotelImage = null; 4 var tags = []; 5 var rate = null; 6 var price = null; 7 8 $.each(hotels, function(index, hotel) { 9 hotelClones = []; 10 hotelClones.push(cloning()); 11 hotelName = hotel.hotel_name; 12 hotelClones[index].find('.hotelname').append(hotelName); 13 $.each(hotelpics, function(index, hotelpic) { 14 if (hotel.hotel_id === hotelpic.hotel_id) { 15 hotelImage = hotelpic.pic; 16 hotelClones[index].find('.image').append(hotelImage); 17 } 18 }); 19 20 tags = []; 21 $.each(hoteltags, function(index, hoteltag) { 22 if (hotel.hotel_id === hoteltag.hotel_id) { 23 console.log(hotel.hotel_id + hoteltag.tag); 24 tags.push(hoteltag.tag); 25 } 26 }); 27 28 for (var i = 0; i < tags.length; i++) { 29 hotelClones[index].find('.tags').append('<span>' + tags[i]); 30 } 31 price = hotel.price; 32 rate = hotel.rate; 33 hotelClones[index].find('.price').append('<span>' + price); 34 hotelClones[index].find('.rating').append('<span>' + rate); 35 $(".rating span").addClass("rate"); 36 $('.hotels').empty(); 37 38 for (var i = 0; i < hotelClones.length; i++) { 39 $('.hotels').append(hotelClones[i]); 40 } 41 });
まずはご自身でconsole.log等使ってデバッグしてみて、どこかで値が想定と違うものになっていないか確かめてみてください。質問文のままだと丸投げの質問として低評価つけられてしまうかもです。
この方丸投げしかないですよ。前から。
エラーはどこで発生していますか?
わからないようでしたら、エラーメッセージをそのままご提示ください。
エラーメッセージは
TypeError: undefined is not an object (evaluating 'hotelClones[index].find')
です
cloning() の返り値は文字列、という理解でいいのですか?
各場所を変更すると上手く行きましたが、新たな問題が発生したので後で編集いたします。
それと、hotels が未定義ですが、これには何が入っているのですか?
これは、アレか、質問者が問題を解決して質問を編集していくのを追いかけるゲームか。
Lhankor_Mh様。いつもありがとうございます。
この問題に関しては
$.each(hotels, function(index, hotel) {
hotelClones = [];
hotelClones.push(cloning());
hotelName = hotel.hotel_name;
hotelClones[index].find('.hotelname').append(hotelName);
$.each(hotelpics, function(index, hotelpic) {
if (hotel.hotel_id === hotelpic.hotel_id) {
hotelImage = hotelpic.pic;
hotelClones[index].find('.image').append(hotelImage);
}
});
のhotelClones = [];を削除すれば解決しました。
回答1件
あなたの回答
tips
プレビュー