MW211 EXIT

devlog
jQuery/[0]を使ってなんとかやってたよ改善集(3)
2012年09月13日
┌──────────────────────────────────────┐
│$('#セレクタ').scrollTop($('#セレクタ')[0].scrollHeight);                   │
└──────────────────────────────────────┘
  ↓
┌──────────────────────────────────────┐
│$('#セレクタ').scrollTop($('#セレクタ').prop('scrollHeight'));              │
└──────────────────────────────────────┘
末尾までスクロールするために、スクロール縦幅を取得するのはprop()で。
attr()だと取得できない(undefined)ので、ご注意を。
分類:jQuery
jQuery/[0]を使ってなんとかやってたよ改善集(2)
2012年09月12日
┌──────────────────────────────────────┐
│if ($('#セレクタ')[0]) {                                                    │
│    $('#セレクタ')[0].focus();                                              │
│}                                                                           │
└──────────────────────────────────────┘
  ↓
┌──────────────────────────────────────┐
│$('#セレクタ').focus();                                                     │
└──────────────────────────────────────┘
フォーカスをあてるのは、別に先頭要素にしなくてもよかったのね。
分類:jQuery
jQuery/[0]を使ってなんとかやってたよ改善集(1)
2012年09月11日
┌──────────────────────────────────────┐
│if ($(this).find(':hidden')[0])                                             │
└──────────────────────────────────────┘
  ↓
┌──────────────────────────────────────┐
│if ($(this).find(':hidden').length)                                         │
└──────────────────────────────────────┘
存在チェック。
ま、先頭の要素があるか否かで判断できるのですが、要素数を見た方がスマートかも。

なお、もっと、わかりやすく書けばこうです。
┌──────────────────────────────────────┐
│if ($(this).find(':hidden').length > 0)                                     │
└──────────────────────────────────────┘
分類:jQuery
Smarty/続・textareaタグを使う場合の注意
2012年09月10日
┌──────────────────────────────────────┐
│<textarea>{$初期値}</textarea>                                              │
└──────────────────────────────────────┘
てやると、先頭の空改行が削除されていくという問題があったが、
┌──────────────────────────────────────┐
│<textarea>                                                                  │
│{$初期値}                                                                   │
│</textarea>                                                                 │
└──────────────────────────────────────┘
今度は上記のようにすると、末尾に空改行が追加されていくという
対照的な事象があることがわかった。

ってことで、最適解は以下の形のようだ。
┌──────────────────────────────────────┐
│<textarea>                                                                  │
│{$初期値}</textarea>                                                        │
└──────────────────────────────────────┘

…う~ん、なんか不恰好。
分類:Smarty
PHP配列/先頭と末尾を取得(3)
2012年09月09日
あれ?よくよく考えると、やりたいことは元の配列に傷をつけずに、
先頭もしくは末尾のデータを取得すること。

これだけでよかった…んだね。

先頭データの値を取得する。
┌──────────────────────────────────────┐
│array_shift($配列);                                                         │
└──────────────────────────────────────┘
  ↓
┌──────────────────────────────────────┐
│reset($配列);                                                               │
└──────────────────────────────────────┘
末尾データの値を取得する。
┌──────────────────────────────────────┐
│array_pop($配列);                                                           │
└──────────────────────────────────────┘
  ↓
┌──────────────────────────────────────┐
│end($配列);                                                                 │
└──────────────────────────────────────┘
分類:PHP配列
PHP配列/先頭と末尾を取得(2)
2012年09月08日
前回の応用で、array_values()を使っても値が取得できる。
また、array_keys()を使えばキーまで取得できる。

先頭データのキーを取得する。
┌──────────────────────────────────────┐
│@array_shift(array_keys($配列));                                            │
├──────────────────────────────────────┤
│@reset(array_keys($配列));                                                  │
└──────────────────────────────────────┘
先頭データの値を取得する。
┌──────────────────────────────────────┐
│@array_shift(array_values($配列));                                          │
├──────────────────────────────────────┤
│@reset(array_values($配列));                                                │
└──────────────────────────────────────┘
末尾データのキーを取得する。
┌──────────────────────────────────────┐
│@array_pop(array_keys($配列));                                              │
├──────────────────────────────────────┤
│@end(array_keys($配列));                                                    │
└──────────────────────────────────────┘
末尾データの値を取得する。
┌──────────────────────────────────────┐
│@array_pop(array_values($配列));                                            │
├──────────────────────────────────────┤
│@end(array_values($配列));                                                  │
└──────────────────────────────────────┘

ワーニングが出るんで「@」も忘れずに。
分類:PHP配列
PHP配列/先頭と末尾を取得(1)
2012年09月07日
配列の先頭のデータを取得する関数。
┌──────────────────────────────────────┐
│array_shift($配列);                                                         │
└──────────────────────────────────────┘
配列の末尾のデータを取得する関数。
┌──────────────────────────────────────┐
│array_pop($配列);                                                           │
└──────────────────────────────────────┘
これらは、添字が連番じゃない時とか、非常に便利だ。

た・だ・し、重大な欠点がある。
取得した値を配列から除去してしまうという作用だ。
元々、そういう目的の関数を参照用に流用しているだけの話だ。

じゃどうすればよいか。
一旦、値渡しで何らかの一時配列に渡して、後は好きにやってくれってのが思い当たる。
┌──────────────────────────────────────┐
│$ワーク = $配列;                                                            │
│array_pop($ワーク);                                                         │
└──────────────────────────────────────┘

でも、なんかまどろっこしい。
一行でやれないものか。。。

ダミーで一関数噛ませてやって、ワーク変数的に扱えばいいじゃん。
ってことで、人畜無害な足し算関数「array_merge()」を使用。
┌──────────────────────────────────────┐
│array_pop(array_merge($配列));                                              │
└──────────────────────────────────────┘

しかしながら、敵もさるもの、ワーニングを吐いてしまう。
┌──────────────────────────────────────┐
│Strict Standards: Only variables should be passed by reference in …        │
└──────────────────────────────────────┘

う~ん、これでどうだ。(なんか無理やり)
┌──────────────────────────────────────┐
│@array_pop(array_merge($配列));                                             │
└──────────────────────────────────────┘
分類:PHP配列
jQuery/リアルタイムAjax表示のエラー
2012年09月06日
AjaxでJSON形式のデータを取得し、表示中の内容を書き換える処理を
断続的に行ったりすると、エラーが発生する。
どうも「TypeError」が発生するようなのだが、なんでだろう。
┌──────────────────────────────────────┐
│function autoFunc() {                                                       │
│    $.getJSON('AjaxURL',                                                    │
│              function(json) {                                              │
│                  try {                                                     │
│                      if (json) {                                           │
│                          $('#this').text(json.data);                       │
│                      }                                                     │
│                  } catch (e) {                                             │
│                      if (e.name == 'TypeError') {                          │
│                          throw e;  // エラーを握り潰す                     │
│                      } else {  // 他エラーを調査                           │
│                          alert(e.name);                                    │
│                          alert(e.message);                                 │
│                      }                                                     │
│                  }                                                         │
│              }                                                             │
│    );                                                                      │
│    setTimeout(autoFunc, 1000);  // 1秒でリロード                           │
│}                                                                           │
└──────────────────────────────────────┘
ま、こんな感じで調査してみる。
分類:jQuery
PostgreSQL/日付を変更して更新
2012年09月05日
「年月日」の文字列、例えば「20120801」とかを一日前に置換するUPDATE文。
┌──────────────────────────────────────┐
│UPDATE 表                                                                   │
│    SET 日付 = TO_CHAR(TO_DATE(日付, 'YYYYMMDD') - 1, 'YYYYMMDD');          │
└──────────────────────────────────────┘
「20120731」になる。
分類:PostgreSQL
PHP/日付チェックと日付変換
2012年09月04日
年月日をチェックしてくれる便利な関数「checkdate()」と、
チェックした後の日付をタイムスタンプに変換してくれる便利な関数「mktime()」。

二人の連携は見事にとれている…と思ったけど。
「mktime()」は2038年以降NGなのにも関わらず「checkdate()」はOKを出す。
「checkdate()」は32767年までOKなのだ。

う~ん。
分類:PHP
前へ 1 … 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 … 156 次へ