MW211 EXIT

devlog
JavaScript/添字配列と連想配列
2013年08月07日
JavaScriptで配列(添字配列)を定義する場合は「new Array()」を使う。
┌──────────────────────────────────────┐
│var 配列 = new Array(                                                       │
│    'A', 'B', 'C'                                                           │
│);                                                                          │
└──────────────────────────────────────┘
配列というオブジェクトを作成するということになる。

これを以下のように書き換えることもできる。
┌──────────────────────────────────────┐
│var 配列 = [                                                                │
│    'A', 'B', 'C'                                                           │
│];                                                                          │
└──────────────────────────────────────┘
だいぶ配列っぽい感じになる。

始めは値が決まっておらず、領域だけ確保したい場合には以下のような感じとなる。
┌──────────────────────────────────────┐
│var 配列 = new Array(3);                                                    │
│配列[0] = 'A';                                                              │
│配列[1] = 'B';                                                              │
│配列[2] = 'C';                                                              │
└──────────────────────────────────────┘
配列要素が数字3だけという配列の初期定義と間際らしいが、
配列要素が数字3だけという配列の初期定義はできないことになる。

連想配列の場合は、以下のようなハッシュ定義となる。
┌──────────────────────────────────────┐
│var 連想配列 = {                                                            │
│    'A': 1, 'B': 2, 'C': 3                                                  │
│};                                                                          │
└──────────────────────────────────────┘

配列の方は添字配列なので、欠番を間に挟んで、突然飛び番に値を格納すると、
そこまでの配列は勝手に空で埋められてしまう。

連想配列はハッシュでということになる。
分類:JavaScript
JavaScript/印刷ボタン
2013年07月16日
┌──────────────────────────────────────┐
│<input type="button" value="印刷" onclick="window.print();"/>               │
└──────────────────────────────────────┘
「window.print();」を実行すると、プリンタ選択ウインドウが開いて
印刷処理へ進む。
分類:JavaScript
JavaScript/乱数による確率操作
2013年05月30日
ま、以下のような関数をつくってみた。
┌──────────────────────────────────────┐
│function randHit(inHit, inAll) {                                            │
│    return (Math.floor(Math.random() * inAll) < inHit) ? true : false;      │
│}                                                                           │
└──────────────────────────────────────┘
以下のように使う。
┌──────────────────────────────────────┐
│if (randHit(30, 100)) {                                                     │
│    alert('あたり');                                                        │
│} else {                                                                    │
│    alert('はずれ');                                                        │
│}                                                                           │
└──────────────────────────────────────┘
30%の確率で「あたり」になる。

ま、いろいろ使える。
分類:JavaScript
JavaScript/残り文字数とアンドゥ
2013年01月17日
textareaタグの長文入力欄の文字数制限を実装する上で、
補助的に入力の度に残り文字数を更新するようにした。

ところが、この結果アンドゥ(ctrl+z)が効かなくなってしまった。

文字数を更新表示することにより、
入力した内容が確定してアンドゥが効かなくなるようだ。

長文入力する上で、アンドゥが効かないのは非常につらい。

ということで、残り文字数の表示は断念。

なんかいい代替案はないものか。
分類:JavaScript
JavaScript/配列合体
2013年01月07日
配列二つを合体させる方法。
┌──────────────────────────────────────┐
│var 新配列 = 旧配列壱.concat(旧配列弐);                                     │
└──────────────────────────────────────┘
これだと「旧配列壱」の後ろに「旧配列弐」が追加される。
分類:JavaScript
JavaScript/split()メソッド
2013年01月06日
┌──────────────────────────────────────┐
│var 配列 = 文字列.split(',');                                               │
└──────────────────────────────────────┘
split()メソッドは、指定した区切文字で配列に分割してくれる便利なメソッドだ。

で、区切文字を複数指定したい場合は?「,」と「 」とか。
┌──────────────────────────────────────┐
│var 配列 = 文字列.split(/,| /);                                             │
└──────────────────────────────────────┘
こんな感じで正規表現を使う。

ちなみに第二引数で配列の上限数を指定できる。
┌──────────────────────────────────────┐
│var 配列 = 文字列.split(',', 3);                                            │
└──────────────────────────────────────┘
これだと分割されて四つ目以降の配列となる予定だったものは切り捨てられる。
あらかじめ、分割数が想定される場合には使えるかも。
分類:JavaScript
JavaScript/日時入力
2013年01月05日
まずは日付チェック。「年、入力値が「YYYY-MM-DD HH:II」形式の文字列で、
日時型のデータとして取り込みたい場合は。
┌──────────────────────────────────────┐
│var ymdhi = 入力値.split(/-| |:/, 5);                                       │
│if (ymdhi.length == 5) {                                                    │
│    if ((isYmd(ymdhi[0], ymdhi[1], ymdhi[2]))                               │
│     && (isHis(ymdhi[3], ymdhi[4], 0)))                                     │
│    {                                                                       │
│        出力値 = new Date(ymdhi[0],                                         │
│                          ymdhi[1] - 1,                                     │
│                          ymdhi[2],                                         │
│                          ymdhi[3],                                         │
│                          ymdhi[4],                                         │
│                          0);                                               │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
「isYmd()」と「isHis()」は先日作成したユーザ関数なので、なくてもよいかも。
ま、「new Date()」のような感じになるってことですな。
月を「0~11」で指定しなきゃならない以外は、違和感はないかも。
分類:JavaScript
JavaScript/日時チェック
2013年01月04日
まずは日付チェック。「年、月、日」を引数に指定すればtrue/falseを返却。
月はJavaScriptの世界の「0~11」ではなく現実世界の「1~12」で対応。
┌──────────────────────────────────────┐
│function isYmd(yyyy, mm, dd)                                                │
│{                                                                           │
│    var dt = new Date(yyyy, mm - 1, dd);                                    │
│    if (isNaN(dt))                   {return false;}                        │
│    if (dt.getFullYear() != yyyy   ) {return false;}                        │
│    if (dt.getMonth()    != mm  - 1) {return false;}                        │
│    if (dt.getDate()     != dd     ) {return false;}                        │
│    return true;                                                            │
│}                                                                           │
└──────────────────────────────────────┘
例)isYmd(2012,2,29)  →  true
    isYmd(2013,2,29)  →  false

続いては時刻チェック。ベタです。
「時、分、秒」を引数に指定すればtrue/falseを返却。
ま、見てのとおり24時というのはアウトです。
┌──────────────────────────────────────┐
│function isHis(hh, ii, ss)                                                  │
│{                                                                           │
│    if (isNaN(hh) || (hh < 0) || (hh > 23)) {return false;}                 │
│    if (isNaN(ii) || (ii < 0) || (ii > 59)) {return false;}                 │
│    if (isNaN(ss) || (ss < 0) || (ss > 59)) {return false;}                 │
│    return true;                                                            │
│}                                                                           │
└──────────────────────────────────────┘

そんなわけで、実はここまでもってくるのが本当は大変なのです。
ま、屏風から虎を出してくれりゃ簡単に退治できますよって話で。

さ、次は馬を川まで連れて来なければ。
分類:JavaScript
JavaScript/日時いろいろ
2013年01月03日
現在日時を求める。
┌──────────────────────────────────────┐
│変数 = new Date();                                                          │
└──────────────────────────────────────┘
そいつを「YYYY-MM-DD HH:II:SS」形式の文字列にする。
┌──────────────────────────────────────┐
│  変数.getFullYear()                                                        │
│+ "-" + ("0" + (変数.getMonth() + 1)).slice(-2)                             │
│+ "-" + ("0" + 変数.getDate()       ).slice(-2)                             │
│+ " " + ("0" + 変数.getHours()      ).slice(-2)                             │
│+ ":" + ("0" + 変数.getMinutes()    ).slice(-2)                             │
│+ ":" + ("0" + 変数.getSeconds()    ).slice(-2)                             │
└──────────────────────────────────────┘
前後にずらすのまとめ。
┌──────┬───────────────────────────────┐
│一年前にする│変数.setFullYear(変数.getFullYear() - 1);                     │
│一年後にする│変数.setFullYear(変数.getFullYear() + 1);                     │
├──────┼───────────────────────────────┤
│一月前にする│変数.setMonth(変数.getMonth() - 1);                           │
│一月後にする│変数.setMonth(変数.getMonth() + 1);                           │
├──────┼───────────────────────────────┤
│一日前にする│変数.setDate(変数.getDate() - 1);                             │
│一日後にする│変数.setDate(変数.getDate() + 1);                             │
├──────┼───────────────────────────────┤
│一時前にする│変数.setHours(変数.getHours() - 1);                           │
│一時後にする│変数.setHours(変数.getHours() + 1);                           │
├──────┼───────────────────────────────┤
│一分前にする│変数.setMinutes(変数.getMinutes() - 1);                       │
│一分後にする│変数.setMinutes(変数.getMinutes() + 1);                       │
├──────┼───────────────────────────────┤
│一秒前にする│変数.setSeconds(変数.getSeconds() - 1);                       │
│一秒後にする│変数.setSeconds(変数.getSeconds() + 1);                       │
└──────┴───────────────────────────────┘
分類:JavaScript
JavaScript/小数点の計算は危険
2012年10月21日
浮動小数点ってやつの危険性はJavaScriptにもある。

試しに以下をやってみると…。
┌──────────────────────────────────────┐
│alert(5.1 * 100);                                   →「509.99999999999994」│
└──────────────────────────────────────┘
分類:JavaScript
前へ 1 2 3 4 5 6 7 8 9 次へ