日付をランダムに選出して代入するプログラムを作ってます
/////////////////////////////////////
function test(){
days = Math.floor( Math.random()*30);
var newarray2 = new Array(31);
j=1;
for( i=0;i<=30;i++){//配列で01〜31日の配列を作る
newarray2[i] = j;
if( j <= 9){newarray2[i] = "0" + j; }//1桁の数字を0をつけ2桁にする
j++;
}
switch(days){
case 0: days = newarray[0]; break;
case 1: days = newarray[1]; break;
....
case 30: days = newarray[30]; break;
}
/////////////////////////////////////
switchでcaseを31個も使うのはださいので
forでまとめようと思ったのですが
switch(days){
for(i=0;i<=30;i++){
case i: days = newarray[i]; break;
}
}
alert(days);
}
試したのですが動きません...
また短くかけるソースならなんでもいいです
こんな感じでどうでしょう。
//文字列を右側からn文字だけ取り出す function right(str, n) { l = str.length; if (n > l) n = l; return(str.substring(l - n, l)); } function test() { days = Math.floor(Math.random() * 31) + 1; days = right("00" + days, 2); alert(days); }
switchも何もいらないと思います。
daysの値が 0だったら
days = newarray[0]; break;
をするということは
days = newarray[days]; break;
と同じことだと思いますが。
ちなみに
case i:
の箇所は 定数じゃないとダメかと思いますが。
一応例として出しました
case では定数しか使えないんですね
エラーコンソールでは単に関数が存在しませんとしか
出なかったためcaseに異常は無いと思ってました
こんな感じでどうでしょう。
//文字列を右側からn文字だけ取り出す function right(str, n) { l = str.length; if (n > l) n = l; return(str.substring(l - n, l)); } function test() { days = Math.floor(Math.random() * 31) + 1; days = right("00" + days, 2); alert(days); }
関数は動作して1桁の表示を2桁も動いて
欲しい動作そのままソース化していただいたのはありがたいのですが...
変数のスコープ上 days をグローバルとして呼び出したいのですが...
補足が足りてませんでしたが...
年、月、日でデータをランダムに格納しています
無論4月は30日までしか無いのでそのような場合に
変数をローカル変数でなく、グローバル変数として扱いたいのですが
ローカルで個別に決めた値をグローバルにはもってこれなくなっています
その場合はどういった処置を取ればよろしいでしょうか
コメント欄でじゅぴたー氏が述べた仕様で,関数を作りました。
学習用の参考リンクを含め,下記エントリにまとめておきました。
JavaScriptで,ランダムな日付情報を取得・表示する関数(うるう年などを加味し,期間の範囲も指定可能)
ソース化していただきありがとうございます
無事に20YYMMDDの形でダイアログ表示確認しました
自分はこのランダム日付のソースを使って、はてなの
ランダムな日付の記事を見ようというものを考えていましたので
現在より過去そしてはてな建設時からという条件を使ってやろうと
考えていました
そのあたりはここまで作っていただいたので自分で考えます
関数は動作して1桁の表示を2桁も動いて
欲しい動作そのままソース化していただいたのはありがたいのですが...
変数のスコープ上 days をグローバルとして呼び出したいのですが...
補足が足りてませんでしたが...
年、月、日でデータをランダムに格納しています
無論4月は30日までしか無いのでそのような場合に
変数をローカル変数でなく、グローバル変数として扱いたいのですが
ローカルで個別に決めた値をグローバルにはもってこれなくなっています
その場合はどういった処置を取ればよろしいでしょうか