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