JavaScript

ぷよぷよ19連鎖JavaScript版

ゲーム「ぷよぷよ」で、フィールドの状態がテキストで与えられたとき、消える「ぷよ」を消して次のフィールドの状態を出力するプログラムを書け。 http://okajima.air-nifty.com/b/2011/01/2011-ffac.html 前回書いたHaskell版のアルゴリズムのままJavaScrip…

タイピング測定

タイピング速度を測定するプログラムをつくってみた。 http://jsdo.it/katona/typing上段のtextareaの課題文を下段のtextareaに入力する。 1文字目の打ち始めから計測を開始するやや有利(?)な仕様。 <html> <head> <title>Typing</title> <script> function key(f){ while(f.src.value.indexO</head></html>…

canvasで色相環

canvasを使って色相環を描いてみた http://kar.s206.xrea.com/js/colors.html 色の変化のさせかたを自分で考えるのが目的だったのでグラデーションの技は使わず1ピクセルずつ処理してる。 なのでかなり重い処理になってるので注意。 RGB各色が0〜255の256階…

iframeについて

<iframe id=iframeId name=iframeName src='foo.txt' onload='foo(this)'>window.document.getElementById('iframeId')はthisと同じ物で,値は[object HTMLIFrameElement] window.iframeNameはthis.contentWindowと同じ物で,値は[object Window] つまり,idでアクセスしたときとnameでアクセスしたときの参照先は別物。 参照先のUR</iframe>…

カーソル位置取得

IEはselectionStartが使えないのでその対策が必要。 現時点では以下のようにした。 function getpos(obj){ if(obj.selectionStart != undefined) return obj.selectionStart; var range = document.selection.createRange(); if(obj.type == 'textarea'){ va…

引数名と同じスロットを用意するコンストラクタ

関数の引数名と同じスロットを挿入するinitメソッドを作ってみた。 Function.prototype.init = function(obj,arg){ var slot = this.toString().match(/\(([^)]*)/)[1].split(/, /); for(var i=0;i

Functionコンストラクタの遅さ

関数式と関数宣言で定義された関数は一度しか解析されませんが、Function コンストラクタで定義された関数はそうではありません。 つまり、Function コンストラクタに渡された関数本体を表す文字列が、評価されるたびに必ず解析されます。 関数式は毎回クロ…

toLocaleFormat

toLocaleFormat Non-standard Converts a date to a string, using a format string. http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date これがNon-standardだなんて。もったいない。指定できるフォーマットはstrftimeの…

リアルタイム財政赤字カウンター

リアルタイム財政赤字カウンター ver 7.6.3 http://www.kh-web.org/fin/ プログラム上では3月31に1116兆円になることが4月1日時点で決まってるのか。 当サイトでは,複製後,データを年に 1,2 回程度更新しています. 計算方法は単純で,今年度(見込)の債…

最近のJavaScript状況メモ

すっかり最近の動向に疎くなってたので、いまさらながらメモ。 IEやOperaの追従状況が気になるところ。 JavaScript 1.7 リストの分割代入が出来るようになってる。 [a, b] = f() というコマンドは、関数の返り値を角カッコ中の変数に順番に代入します。 http…

functionの省略形

JavaScriptで無名関数を使うときは例えば以下のように長くなりがち(ちょっと作為的だけど)。 [1,2,3,4,5].filter(function(x){return x%2}).map(function(x){return x*2})というわけで、タイプ数を減らせる関数$Lを考える。 最初はfunctionだから$Fにしよ…

constructor

Foo.prototype.constructorのもともとの値は、function Foo(){…} ({}).constructorの値は、function Object(){[native code]} よって、Foo.prototype={…}とプロトタイプオブジェクト全体をすげ替えてしまうと、constructorプロパティの内容が変わってしまう…

例外オブジェクト

未定義の変数aをevalしたときにcatchした各ブラウザでの例外オブジェクトの比較 firefoxの場合 例外オブジェクト自体をtoString()した値 ReferenceError: a is not defined 各プロパティ name: ReferenceError message: a is not defined fileName: http://w…

イベントキャンセル

<form onsubmit='foo();return false'>またはfoo()がfalseを返すようにしておいて <form onsubmit='return foo()'>ただし、foo()内でfalseを返しているだけではダメなので注意。関数内でのreturn falseとイベントハンドラ内のreturn falseはよく考えると別物ですね。 自分で作った関数のリターン値なんて、誰もみてくれないんで</form></form>…