地球ウォーカー2

Scala, Python の勉強日記

JavaScript

jQueryを使ってkeydownイベントを呼び出す方法

最近やり方を知った。 用途は$('input')に設定されているkeydownイベントのテストをしたいときなど。 var evt = $.Event('keydown'); evt.keyCode = 13; // エンターキー入力時のテスト $('input').trigger(evt); keydownの部分を変更すれば、他のイベントも…

「readonlyの解除ができない」

と、この間会社の先輩(JavaScriptは初心者)が嘆いていたので、同じコトで困っている誰かの為にエントリ。その先輩が書いていたソースはこんな感じ。 <script> function f() { var t = document.getElementById('text1'); t.readonly = "false"; } </script> <input type="text" id="text1" value="" readonly /> <input type="button" onclick="f();" value="読取専用解除" /> 期待する動作…

JavaScriptの<code>return</code>

returnでちょっとハマったので今後同じミスをしないようにメモ。 var f = function() { return { name : "hysa" } }; f().name; // hysaを期待 みたいなコードを書いたら、 TypeError: f() is undefined となってしまって悩んだ。原因は、JavaScriptの場合、…

カスケード

Good Partsに載ってる、メソッドチェーン的なアレ。 メソッドの中でthisを返すようにするだけで実現できる。 ググってもあんまり出てこないけど、一般的な言葉じゃないんだろうか。 function Box(h, w, c) { this.height = h; this.width = w; this.color = …

Input要素の<code>value</code>

<input type="text" id="pattern" value="\d" /> <script type="text/javascript"> var p1 = '\d'; var p2 = document.getElementById('pattern').value; console.log('p1 is ' + p1); // → p1 is d console.log('p2 is ' + p2); // → p2 is \d console.log(new RegExp(p1).test(123)); // → false console.log(new RegExp(…

JavaScriptで引数を配列に変換する

関数の引数(Argumentsオブジェクト)を配列に変換する方法。 イディオム Array.prototype.slice.call(arguments); 使用例 function f() { var args = Array.prototype.slice.call(arguments); return args.join(''); } console.log(f('A', 'B', 'C', 'D', 'E'…

JavaScriptで数値配列をソート

JavaScriptで数値配列をソートする方法。 イディオム array.sort(function(a,b){return a - b;});array.sort()だと要素を文字列として比較してしまうので 数値の比較関数を引数に渡してやる。 使用例 var array = [3, 10, 1, 5, 5, 8]; array.sort(); consol…

JavaScriptでJavaのStringクラスのメソッドを実装

追記:String#endsWithを修正&別の実装方法を追加 (2009/08/17 ) 気が向いたので JavaのStringクラスで実装されているメソッドをJavaScriptで実装してみた。 接頭辞判定:String#startsWith 文字列の指定されたインデックス以降の部分文字列が、 指定され…

JavaScriptで配列の最大値、最小値を求める

JavaScriptで配列の最大値、最小値を求める方法。 イディオム Math.max.apply(Math, array); Math.min.apply(Math, array);※arrayは配列 使用例(Firebugコンソールで実行可能) var array = [3, 10, 1, 5, 5, 8]; console.log(Math.max.apply(Math, array))…