MW211 EXIT

devlog
JavaScript/置換の罠
2012年02月10日
「.replace(置換前,置換後)」は一文字しか置換しないので注意。

「"いっぱい".replace("い","お")」の結果は、
「おっぱい」であって「おっぱお」ではない。

全部置換したい場合には正規表現を使ってしまえ。
「"いっぱい".replace(/い/g,"お")」

「g」パラメータを使う。
また、「"」で囲う必要がないのにも注意。
分類:注意、JavaScript
JavaScript/フォームに要素を追加
2012年02月09日
┌──────────────────────────────────────┐
│function $(inId) {return document.getElementById(inId);}                    │
└──────────────────────────────────────┘
と定義していることを前提として。

JavaScriptで、idが「form」というフォームに、「$_POST['キー'] = '値'」みたいな
hidden属性を追加するには以下のような感じになる。
┌──────────────────────────────────────┐
│var addEle = document.createElement("input");                               │
│addEle.type  = "hidden";                                                    │
│addEle.name  = "キー";                                                      │
│addEle.value = "値";                                                        │
│$("form").appendChild(addEle);                                              │
└──────────────────────────────────────┘

ちなみに、jQueryだと以下みたいに簡単にできる。
┌──────────────────────────────────────┐
│$("#form").append('<input type="hidden" name="キー" value="値"/>');         │
└──────────────────────────────────────┘
分類:JavaScript
JavaScript/ゼロパディング
2012年02月06日
例えば、「1」を「001」と3桁固定で表示するために、
先頭に「0」を埋めるようなことを、「ゼロパディング」という。

Excelの関数で以下のような感じで実現できる。
┌──────────────────────────────────────┐
│=TEXT(1,"000")                                                              │
└──────────────────────────────────────┘

CやPHPだとこんな感じなる。
┌──────────────────────────────────────┐
│sprintf("%3d", 1)                                                           │
└──────────────────────────────────────┘

では、JavaScriptでは?

まず、ベタな方法。
┌──────────────────────────────────────┐
│var a = 1;                                                                  │
│if (a < 100) {a = "0" + a;}                                                 │
│if (a < 10)  {a = "0" + a;}                                                 │
└──────────────────────────────────────┘
ただ、これだとif文を羅列しなきゃならない。

ちなみに数値以外にも対応したい場合は、こうか。
┌──────────────────────────────────────┐
│var a = 1;                                                                  │
│switch (a.length) {                                                         │
│  case  1: a = "00" + a;                                                    │
│  case  2: a = "0"  + a;                                                    │
│}                                                                           │
└──────────────────────────────────────┘

ただし、一番シンプルなのは以下だろう。
┌──────────────────────────────────────┐
│var a = 1;                                                                  │
│a = ("00" + a).slice(-3);                                                   │
└──────────────────────────────────────┘
これは使える。
分類:JavaScript
JavaScript/配列に追加
2012年02月05日
PHPにおいて配列の最後に追加するには、以下のような感じに記述する。
┌──────────────────────────────────────┐
│$配列[] = 値;                                                               │
└──────────────────────────────────────┘

これをJavaScriptにあてはめると、以下のような感じになる。
┌──────────────────────────────────────┐
│配列.push(値);                                                              │
└──────────────────────────────────────┘
「配列[] = 値;」とはできないので注意。
分類:JavaScript
JavaScript/alertダイアログ
2012年01月21日
JavaScriptにて「alert()」でダイアログを表示した場合の
ブラウザによる挙動の違いは以下の通り。

・InternetExplorer
→タイトルは「Windows Internet Explorer」

・Firefox
→タイトルは特になし

・Chrome
→タイトルは「(URL) says: のページ」

・Safari
→タイトルは特になし
→メッセージ上部に「(URL)」を表示

・Opera
→タイトルは「JavaScript」
→メッセージ上部に「<(URL)>」を表示

※(URL)は現在開いているページのURL
分類:ブラウザ、JavaScript
JavaScript/周期処理
2012年01月16日
┌──────────────────────────────────────┐
│init() {                                                                    │
│  setInterval(func(), 1000);  // 1秒周期                                    │
│}                                                                           │
├──────────────────────────────────────┤
│function func() {                                                           │
│  処理;                                                                     │
│}                                                                           │
└──────────────────────────────────────┘
                    「setInterval()」↓  ↑「setTimeout()」
┌──────────────────────────────────────┐
│init() {                                                                    │
│  setTimeout(func(), 1000);  // 1秒周期                                     │
│}                                                                           │
├──────────────────────────────────────┤
│function func() {                                                           │
│  処理;                                                                     │
│  setTimeout(func(), 1000);  // 1秒周期                                     │
│}                                                                           │
└──────────────────────────────────────┘

こんな感じで書き分けられる。

前者は何が何でも時間に厳格で、後者は前の処理が終わるのを待ってくれる。
分類:JavaScript
JavaScript/disabledの錯覚
2012年01月11日
「disabled="disabled"」みたいな属性を付加することにより
その項目を入力不可とするとともに、POSTパラメータとして送信しなくできる。
(っていうか送信できないのが結構厄介だったりするけど)

でも、こいつは消滅したわけじゃない。
document.getElementById()とかでもしっかり扱ってくれる。
特にjQueryのeach()とかでもね。

チェックを外した瞬間に動的にdisabledにして、submitにチェックって時に
チェック対象外かなって錯覚するパターンだ。
分類:JavaScript、jQuery
JavaScript/数値チェック
2011年12月25日
JavaScriptでの数値チェックは「isNaN()」を使う。
┌──────────────────────────────────────┐
│if (isNaN(値)) {                                                            │
│  alert("数値じゃありません");                                              │
│} else {                                                                    │
│  alert("数値です");                                                        │
│}                                                                           │
└──────────────────────────────────────┘
ベタな話だが、数値じゃない場合が「真」だから注意。

「あれ?数値を入力したつもりが、数値チェックでエラーとなるな。
もしかして入力した時は文字列扱いだから、
Number()かなんかなにかで数値型に変換してからisNaN()にかけなきゃダメかな?」
とか思ったら本末転倒になってしまう。
分類:JavaScript
JavaScriptのエラー(1)
2011年12月16日
IEで以下のJavaScriptエラーが出た場合の原因
┌──────────────────────────────────────┐
│ライン:1000                                                                 │
│文字:1                                                                      │
│エラー:オブジェクトを指定してください                                       │
│コード:0                                                                    │
└──────────────────────────────────────┘

JavaScript外部ファイルのアサイン順番の間違い。
例)jQueryをアサインする前に、jQueryを使用しているJavaScript外部ファイルを
    アサインした
分類:JavaScript
JavaScript/リロード
2011年11月26日
毎回リロードするならこれ。
┌──────────────────────────────────────┐
│setInterval(function(){処理;}, リロード間隔);                               │
└──────────────────────────────────────┘
リロード間隔は、マイクロ秒で指定する。

一回きりのリロードの場合はこれ。
┌──────────────────────────────────────┐
│setTimeout(function(){処理;}, リロード間隔);                                │
└──────────────────────────────────────┘
これで、画面全体をリロードすれば、元に戻るので毎回リロードと同等になる。
分類:JavaScript
前へ 1 2 3 4 5 6 7 8 9 次へ