アプリ版:「スタンプのみでお礼する」機能のリリースについて

ボタンをクリックする度に連番で作成した関数を順番に実行したいのですが、スマートな書き方がわかりません。
下記のコードで一応動くのですが、関数が100個とかに増えた場合すごくコードが長くなってしまいます。
もっとスマートに書く方法はないものでしょうか?

▼サンプルコード

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10 …
<script>
$(function(){
function s1(){alert('s1');};
function s2(){alert('s2');};
function s3(){alert('s3');};

var num = 1;

$('p').click(function() {
if(num == 1){s1();}
else if(num == 2){s2();}
else if(num == 3){s3();}
num++;
return false;
});
});
</script>
</head>
<body>
<p>click</p>
</body>
</html>

A 回答 (2件)

ANo1です。



例えば、以下のようにすることで、呼び出す毎に順番に実行する関数を定義することも可能です。
var Func = (function(){
 var i = 0. funcs = [
  function(){ alert("s1"); },
  function(){ alert("s2"); },
  function(){ alert("s3"); }
 ];

 return function(){
  funcs[i]();
  i = ++i % funcs.length;
 }
})();



Func(); // s1
Func(); // s2
Func(); // s3
Func(); // s1
    • good
    • 0
この回答へのお礼

ご回答有り難うございます!
仰っている意味はわかりますが、書き方が初めて見るものでしたので、実際に試しながら勉強させて頂きます!

お礼日時:2014/03/11 15:54

連番関数というのを配列にしとけばいいんではないでしょうか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!