前提・実現したいこと
殆どコピペに頼っている初心者ですが、よろしくお願いいたします
・画像をクリックするたびに要素の表示・非表示の動作が発生し数秒後もとの状態に戻る
・クリックで表示される画像と文字列がセットになったものは数パターンあり、ランダムに表示される
上記のような遊びのページを作ろうとしています
発生している問題・エラーメッセージ
切り替え用画像が表示されず(非表示マークが出ている)
画像とセットで表示されるようにした文字列も切り替え用画像を表示させるタイミングで消えてしまう
net::ERR_FILE_NOT_FOUND Image (async) (anonymous) @ script.js:49 dispatch @ jquery.min.js:2 v.handle @ jquery.min.js:2
jQuely
$(function() { // 画像をクリックしたら発動 $('div.character').on('click', function() { // 要素の表示・非表示を切り替えてコメントを表示 $('div.text').fadeIn(500); $('div.change').fadeIn(500); $('div.character').fadeOut(500); // 時間経過で要素の表示・非表示をもとに戻してコメントを非表示 $('div.text').delay(4000).fadeOut(500); $('div.change').delay(4000).fadeOut(500); $('div.character').delay(4000).fadeIn(500); // リストアップ var elements = [ ['コメントA', './img/a.png'], ['コメントB', './img/b.png'], ['コメントC', './img/c.png'] ]; // リストの数をチェックしてランダムに取得 var randElm = elements[Math.floor(Math.random() * elements.length)]; var randImg = elements[Math.floor(Math.random() * elements.length)]; // 表示エリアにコメントを挿入 $('div.word').html(randElm[0]); // 表示エリアに切り替え用画像を挿入 var img = document.getElementById('change_image'); img.src = 'randImg[1]'; }); });
HTML
<div class="talk"> <div class="character"><img src="./img/normal.png"></div> <div class="change"><img src="./img/a.png" id="change_image"></div> <div class="text"><div class="wordbox"><div class="word"></div></div></div> </div>
試したこと
// リストの数をチェックしてランダムに取得(の切り替え用画像部分) var randImg = elements[Math.floor(Math.random() * elements.length)]; // 切り替え用画像を表示させる(の全ての記述) var img = document.getElementById('change_image'); img.src = 'randImg[1]';
上記を削除すると、ランダムにはならないものの画像自体は表示される(HTMLで指定しているため)ので
jQuelyの切り替え画像に関する部分の記述に問題があるのかな?と思っているのですが、具体的にどう書き換えればいいのかがわかりません
切り替え用の画像が表示されないが故に挙動がおかしくなっているようなので
単純に画像パスの記述ミスかとも思ったのですが、前述の通りHTMLで指定した画像は表示されるので
そちらは間違っていないように感じます
(一応補足すると、HTMLと同じ階層に画像フォルダをつくり、その中に画像を入れています)
どうかご教示願います
回答3件
あなたの回答
tips
プレビュー