JavaScript の attachEvent でハマる
こんな感じのコードを書いたのだが、IEで動かなくて四苦八苦。
function addEvent(event, obj, func) { if (obj.addEventListener) { obj.addEventListener(event, func, false); } else { obj.attachEvent('on'+event, func); } function init() { var inputs = document.getElementById('hoge').getElementsByTagName('input'); for (var i = 0; i < inputs; i++) { if (inputs[i].type == 'checkbox') { addEvent('click', inputs[i], function(e){ fooFunc(this); }); } } } function fooFunc(obj) { ... }
色々と調べまわった挙句、http://nantan.xrea.jp/item/1617/catid/3 の記事を読んで解決しました。
addEvent('click', inputs[i], function(e){ - fooFunc(this); + fooFunc(e.srcElement ? e.srcElement : this); });
ハンドラに引数を持たせる方法は使ったことなかったので、まさかこんな落とし穴があるとは。