[過去ログ] + JavaScript の質問用スレッド vol.117 + (1001レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
482
(2): デフォルトの名無しさん [sage] 2014/12/20(土) 15:17:47.42 ID:G86rIizh(1/4) AAS
>>470
470(3): デフォルトの名無しさん [] 2014/12/20(土) 13:15:51.69 ID:z3B/t80F(1/14) AAS
失礼します。
1ページに複数の画像を並べてオンマウスで画像3枚が順番に変わるようにしたいのですが、
下記のスクリプトを2つ並べると2つ目にマウスを持って行っても1つ目の画像が変わってしまいます。
どこを変更すればいいでしょうか・・
<div><IMG SRC=".1.jpg" id="show"
onmouseover="Over()" onmouseout="Out()"></div>
<script type='text/javascript'>
var i=1;
img=new Array(3);
img[1]=".1.jpg";
img[2]=".2.jpg";
img[3]=".3.jpg";
var tid = null;
function Over() {
if (! tid) {
tid = setInterval(Switch, 500);
}
}
function Out() {
if (tid) {
clearInterval(tid);
tid = null;
}
}
function Switch() {
document.getElementById("show").src=img[i];
i=i+1;
if(i>3){i=1;}
}
</script>
id="show" もあるが、setInterval が返す tid を独立させないと複数の要素に対応できない
どう見てもライブラリにすれば解決する問題ではないのでここで継続質問していい
が、現象が発生するコード(複数並べた場合のコード)を 外部リンク:jsfiddle.net にUPした方が回答しやすい(やったやらない議論が無駄)
489
(1): デフォルトの名無しさん [sage] 2014/12/20(土) 15:38:27.10 ID:G86rIizh(2/4) AAS
>>485
485(2): デフォルトの名無しさん [] 2014/12/20(土) 15:25:45.72 ID:z3B/t80F(7/14) AAS
>>482
すみません、先ほどのコードもjavascriptも初めての経験なのでご指摘のサイトの
利用方法もわからないのですが、
外部リンク:jsfiddle.net
これで良いのでしょうか?

ご面倒をおかけしまして本当にすみません。
jsfiddleはこう使う(体裁を整えただけなので正常動作しない)
外部リンク:jsfiddle.net

id="show" が重複しているのが結局直ってないな
また、JavaScriptのグローバル変数も衝突しているので正常動作するはずがない
コピペして増やせば正常動作するだろうという安易な発想は捨てたほうがいい

・そもそも、function Over 等は共有できるのだから多重定義する意味はないだろう。event.target で対象のimg要素を取得し、srcプロパティの画像ファイル名から数値をインクリメントする処理を増やせばいい
・tid はクロージャに閉じ込めるか、配列化して衝突を避ける
これで解決できると思う
492
(1): デフォルトの名無しさん [sage] 2014/12/20(土) 15:55:34.70 ID:G86rIizh(3/4) AAS
>>490
490(1): デフォルトの名無しさん [] 2014/12/20(土) 15:41:44.85 ID:z3B/t80F(9/14) AAS
>>489
すみません‥こうしたいと思って探したものがたまたま先ほどのスクリプトでしたので、
本当に知識は0なのです。
どうやら私は無謀な挑戦をしていたようですね…
・id="show" の重複を避けるのはHTMLの分野
・グローバル変数の衝突はJavaScriptの分野
どちらも基礎知識に分類されるので基礎からみっちり勉強したほうがいいように思う
そうしないと今回は解決したとしても、また別の場面ではまるのは間違いない
498
(2): デフォルトの名無しさん [sage] 2014/12/20(土) 16:23:43.37 ID:G86rIizh(4/4) AAS
>>496
496(1): デフォルトの名無しさん [] 2014/12/20(土) 16:13:34.69 ID:z3B/t80F(12/14) AAS
>>495
わかりました、ご丁寧にありがとうございます。
読み漁ってみます。
参考書としてはこの辺りを勧めておく

Amazon.co.jp: DOM Scripting 標準ガイドブック ~やさしく学ぶ、JavaScriptとDOMによるWebデザイン~ (Web Designing BOOKS): Jeremy Keith, 中村 享介, 吉川 典秀: 本
外部リンク:www.amazon.co.jp
Amazon.co.jp: WebクリエイティブのためのDOM Scripting (Web Designing Books): 中村享介: 本
外部リンク:www.amazon.co.jp

jQueryはもっと後でいい
JavaScriptだけで書けるようになってからjQueryに手をつけないと、質の低いサンプルコードのコピペプログラミングになる
例えば、eventオブジェクトを活用したjQueryコードはほぼ見ないが、eventオブジェクトは addEventListener に慣れ親しんだ者なら一般的なものだ
JavaScriptだけで書けるようになってこそライブラリの選択肢の幅が広がる
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.054s