jQueryを使っています。
altに番号が振ってある複数の画像の中から
ランダムで1つだけ抜き出す、というよくあるパターン。
画像の数は
1 | var length = $( ".picture img" ).length; |
これで取得
ランダムで抜き出すのは以下で取得(サイコロを振っている)
1 | var ran = Math.floor(Math.random()*length) + 1; |
けれど何かの手違いでaltに番号が振られていない場合
1 | var search_no = $( "img" ).eq( parseInt(ran) ).attr( "alt" ); |
search_no には、undefinedが入ります。
この時の判定をよく使うようになったので、メモしておきます
1 2 3 4 5 | // search_noが見つからなければ、サイコロを振りなおし続ける while ( typeof search_no === "undefined" ){ ran = Math.floor(Math.random()*length) + 1; search_no = $( "img" ).eq( parseInt(ran) ).attr( "alt" ); } |
運営上、全体でまったく見つからないということはありえないのですが、
10回トライして、それでも見つからなければ、途中で処理を中断、
という処理を作った方がいいですね。
解説を書いていて、プログラミング的には無限ループの処理に
なっていることに気がつきました。
1 | while ( ( typeof search_no === "undefined" ) || (i++ < 10) ){ |
これでいいようです。
間違いがあれば、どなたか教えてください。
コメント