るところで、undefinedになると後続の処理でお...
テスト用にコードを書いて試してみてください。
$switchImgSubsは要素の画像が存在するかどうかは、ユーザーが登録するかどうかによってしまいますね?
(サービスの仕様として必ず画像登録が必須なら別ですが)
その場合、undefinedが入ることになります。
undefinedのまま、それに対して.onでイベントハンドラを設定(要素を操作)しようとしていますね。
Chromeブラウザで開発ツールを開いて、その場合に何かjsのエラーは出るか?その後の処理は止まるか?
を確認しましょう。
IE11の場合はjsにエラーがあった場合は後続の処理は絶対に止まってしまいます。
(確認できるなら、無料のvirtualboxといった仮想環境ソフトを入れて、macの中にwindowsを入れて確認してみてください。)
また、要素が確実にある(動的に要素や取得するセレクタとして使うクラス名を付け外ししていない。ベタ書きされている)という場合には、要素は確実に取得できるため、エラーは絶対に起きないわけなので、undefinedかどうかのチェックは逆に無駄なコードとなります。
無駄なコードを書く=無駄なバグを生む可能性を高めている
ということですね。
Windows環境まで用意できませんでしたが、macのchrome環境で一旦テストコードを書いてみて、存在しない要素を宣言してもエラーは発生せず、後続の処理も進むことを確認しました。それならばと今回の$likeとlikeProductIdのnull設定を外して、こちらもエラーが出ないことを確認しました。
そうすると、今回のundefinedのチェックの必要性がわからなくなってしまいました。ブラウザに依る挙動の違いを埋めるためということでしょうか?
$('#notExistId').on('click', function(){
alert('ok');
});
var $dom = $('#notExistId');
$dom.html('b');
console.log($dom);
var dom = document.getElementById('notExistId');
dom.innerText = 'c';
console.log(dom);
やってみると分かりますが、
jQueryでDOMを取得した場合は、要素がなくてもjQueryのオブジェクトが必ず返ってきます。
しかし、jsで存在しない要素を直接取得して、何かその後に操作をしようとした場合はエラーとなります。
jQueryはjsで書かれたライブラリですが、jQueryのDOMを取得する
$(セレクタ)
というもの(中身はただの関数です)は、undefinedのチェックなどを全部中で行い、要素がなくてもjQueryのオブジェクトを返す仕様となっています。
言語仕様については、詳しくはjs中級でやっていきます。
jQueryを使わない現場が現在増えてきているため、このあたりの違いをわかっておくといいでしょう。
jQueryでDOMを取ってくる中で試していただけでしたので、そこまで確認できておりませんでした。
railsの勉強中も思ったのですが、ライブラリやFWに頼りすぎると、見逃してしまうことも多いですね。
部活の学習一覧
Lesson 01
「WEBサービスと必要な機能」
Lesson 02
「画面を設計しよう!」
Lesson 03
「テーブルを設計しよう!part1」
Lesson 04
「テーブルを設計しよう!part2」
Lesson 05
「テーブルを設計しよう!part3」
Lesson 06
「DB作成」
Lesson 07
「画面を作ろう!」
Lesson 08
「画面を作ろう!part2」
Lesson 09
「ユーザー登録機能を作ろう!」
Lesson 10
「ユーザー登録機能を作ろう!part2」
コーヒーブレイク
「投資の小話」
Lesson 11
「ログイン機能を作ろう!」
Lesson 12
「ログアウト機能を作ろう!」
Lesson 13
「退会機能を作ろう!」
Lesson 14
「プロフィール編集機能を作ろう!」
コーヒーブレイク
「書いて書いて書きまくれ!」
Lesson 15
「パスワード変更機能を作ろう!」
Lesson 16
「パスワードリマインダー機能を作ろう!」
Lesson 17
「商品登録機能を作ろう!」
Lesson 18
「商品登録機能を作ろう!part2」
Lesson 19
「商品登録機能を作ろう!part3」
Lesson 20
「商品一覧表示機能を作ろう!」
Lesson 21
「商品詳細画面を作ろう!」
Lesson 22
「商品検索機能を作ろう!」
Lesson 23
「連絡掲示板機能を作ろう!」
Lesson 24
「お気に入り機能を作ろう!」
Lesson 25
「マイページ機能を作ろう!」
コーヒーブレイク
「はたらくプログラミング 第5話」
ご意見箱
よろしくお願いします。