質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

421閲覧

jQuery undefined is not an object

Chandler_Bing

総合スコア673

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

0クリップ

投稿2019/02/15 11:42

以下の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 });
bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu-smc

2019/02/15 11:54

まずはご自身でconsole.log等使ってデバッグしてみて、どこかで値が想定と違うものになっていないか確かめてみてください。質問文のままだと丸投げの質問として低評価つけられてしまうかもです。
m.ts10806

2019/02/15 12:12

この方丸投げしかないですよ。前から。
Lhankor_Mhy

2019/02/15 12:12

エラーはどこで発生していますか? わからないようでしたら、エラーメッセージをそのままご提示ください。
Chandler_Bing

2019/02/15 12:18

エラーメッセージは TypeError: undefined is not an object (evaluating 'hotelClones[index].find') です
Lhankor_Mhy

2019/02/15 12:25

cloning() の返り値は文字列、という理解でいいのですか?
Chandler_Bing

2019/02/15 12:26

各場所を変更すると上手く行きましたが、新たな問題が発生したので後で編集いたします。
Lhankor_Mhy

2019/02/15 12:27

それと、hotels が未定義ですが、これには何が入っているのですか?
Lhankor_Mhy

2019/02/15 12:30

これは、アレか、質問者が問題を解決して質問を編集していくのを追いかけるゲームか。
Chandler_Bing

2019/02/15 13:03

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 = [];を削除すれば解決しました。
guest

回答1

0

自己解決

JS

1 $.each(hotels, function(index, hotel) { 2 //hotelClones = [];ここをコメントアウトにすると解決 3 hotelClones.push(cloning()); 4 hotelName = hotel.hotel_name; 5 hotelClones[index].find('.hotelname').append(hotelName); 6 $.each(hotelpics, function(index, hotelpic) { 7 if (hotel.hotel_id === hotelpic.hotel_id) { 8 hotelImage = hotelpic.pic; 9 hotelClones[index].find('.image').append(hotelImage); 10 } 11 });

JS

1コード

JS

1

投稿2019/02/15 13:05

Chandler_Bing

総合スコア673

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chandler_Bing

2019/02/15 13:06

追記、 また一番外側のeachの最後で、 hotelClones = [];で初期化します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問