私はこの小さなスクリプトを作成してきましたが、何らかの理由で、変数の1つがその値を増加させません。
コードは次のようになります。
function get_swf(mode){
var swf_path;
swf_update(); //Updating max_num
if (location.hash) current = location.hash.replace(/[^0-9.]/g, ""); //Getting only numbers
switch(mode){
case "random":
current = Math.floor((Math.random() * max_num) + 1);
swf_path = "uploads/" + current + ".swf";
break;
case "next":
current += 1;
if(current > max_num) current = 1;
swf_path = "uploads/" + current + ".swf";
break;
case "previous":
current -= 1;
if(current == 0) current = max_num;
swf_path = "uploads/" + current + ".swf";
break;
}
swfobject.embedSWF(swf_path, "lolswf", "800", "400", "9.0.0");
location.hash = current;
}
このコードは関数内にあり、variables:current
およびmax_num
はグローバル変数です。ケース「next」が呼び出された場合を除いて、すべてが期待どおりに機能します。この場合、変数current
は、に達していない場合でも値「1」に設定されますmax_num
。たとえば、次のように設定した場合:
max_num = 5
とcurrent = 2
「次へ」と呼ぶとcurrent
1に設定されます。
頭が回らないのですが、手伝ってくれませんか?
どうもありがとうございます!
編集
コードをさらに調べたところ、コードにバグがあるように見える行が見つかりました。この行は、私が提供したコードの上にあります。(コードを関数全体に更新したので、ご覧いただけます)
if (location.hash) current = location.hash.replace(/[^0-9.]/g, ""); //Getting only numbers
この行から私が期待したのは、current
変数を単に上書きするだけなので、ユーザーは必ずしも最初から始める必要はないということです。しかし、current
値を増やす必要があるのに、なぜ値が「1」になるのでしょうか。そして、なぜ他のケースが期待どおりに機能するのでしょうか?
どうもありがとうございました!