かつてJavaScriptの動的読込み関数を自作していましたが、
jQueryを使えばとても簡単にできるようです。
1 2 3 |
$.getScript('script1.js', function(){ // 読込み後に処理実行 }); |
以前の記事:
JavaScriptファイルを動的に読みこむ
在宅プログラマーの備忘録として2005年に始めたブログです。
かつてJavaScriptの動的読込み関数を自作していましたが、
jQueryを使えばとても簡単にできるようです。
1 2 3 |
$.getScript('script1.js', function(){ // 読込み後に処理実行 }); |
以前の記事:
JavaScriptファイルを動的に読みこむ
MySQLで複数行の結果を1行にまとめるにはGROUP_CONCAT関数を使用します。
1 |
SELECT GROUP_CONCAT(column1 SEPARATOR ',') FROM ~以下略~ |
SEPARATORで区切られた文字列で返ってきます。
どんなときに使うかというと、
たとえば
・USERテーブルにユーザー情報
・ADDRESSテーブルに住所情報
が入っていたとして、各ユーザーは住所が複数登録されている可能性があるとします。
(大手ECサイトでユーザーが住所を複数登録できるというようなイメージです。)
このとき
「全ユーザーの全住所を取得して、ユーザーごとにまとめて表示したい」
となったとき、3つの方法があります。
・SQLでUSERを取得し、USERの1件ずつに対して、またSQLでADDRESSを取得する。
・SQLでサブクエリーを使って全USERの全ADDRESSを取得して、プログラム側でUSERごとにまとめる
・SQLでGROUP_CONCATを使ってUSERごとにADDRESSをまとめた状態で取得する
3番目が一番スマートに取得できますよね。
ただし、SQLがあまり複雑になるとパフォーマンスが低下する場合がありますので、
プログラム側でやったほうがよいケースもあります。
jQueryを使うとチェックボックスでチェックされた項目だけを簡単に取得できます。
たとえば「checkbox1」というクラス名が指定されたチェックボックスが複数あったとして、
1 |
var checked_list = $('.checkbox1:checked'); |
これでチェックされたチェックボックスだけが配列として取得できます。
テキストエリアのカーソル位置にテキストを挿入する関数です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function insert_textarea(target, str) { var obj = $(target); obj.focus(); if(navigator.userAgent.match(/MSIE/)) { var r = document.selection.createRange(); r.text = str; r.select(); } else { var s = obj.val(); var p = obj.get(0).selectionStart; var np = p + str.length; obj.val(s.substr(0, p) + str + s.substr(p)); obj.get(0).setSelectionRange(np, np); } } |
※jQueryを使用しています。
VLOOKUP関数は他の表を検索して値を入れてくれるという非常に便利な関数ですが、
久しぶりに使おうとしたときに、書式を覚えていたことはまずありません。
1 |
VLOOKUP(検索キー, 検索範囲, 値の列番号, 検索方法) |
検索キー:コードなどの検索キーがはいります。
検索範囲:検索される表を指定します。キーと値を含んでいる必要があり、またキーの列が1列目である必要があります。
値の列番号:上で指定した検索範囲の中で、値が何列目にあるかを指定します。(左から1列目、2列目、、)
検索方法:TRUEかFALSEで指定します。TRUEの場合は一致しなくても一番近い値が入ります。
1 |
=VLOOKUP(B3,E3:F11,2,FALSE) |
しかし、これだけだとキーが検索対象になかった場合に
「#N/A」というエラー表示になってしまいます。
そこで、IFERROR関数を使います。
1 |
IFERROR(VLOOKUP(検索キー, 検索範囲, 値の列番号, 検索方法), エラーのときに代入する値) |
エラーのときは空欄になるようにした例です。
1 |
=IFERROR(VLOOKUP(B3,E3:F11,2,FALSE),"") |