- ベストアンサー
document.getElementById() で返されるオブジェクトについて
日本語で上手く説明できないのですが、 document.getElementById()で返されるオブジェクトに共通して使える関数を作成したいのです。 大体、こんな感じです。 Object.prototype.hoge = function(){...}; document.getElementById("ID").hoge(); しかし、この方法ではhogeは実行されないので、どうもObjectじゃないようなのです。 代わりに何を使えば良いのか、また、それが分かるサイトをご存知の方は、ご教示願います。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 試してみたところ、No.2さんの言うとおり、IEでは動きませんでした… IEは確かに出来ないですね。知りませんでした。 ちょっと探してみましたが上手い方法が見つからないので、代替手段が必要かなと思います。 念のためお聞きしますが、ドットシンタックスに拘る理由は何でしょうか? それが例えば - DOM共通の関数を定義したい - 括弧の入れ子は視認性が悪い なら、prototype.jsやjQueryのようにオブジェクトを独自に定義してしまってもいいですね。 var getId = function(id){ return document.getElementById(id); }; getId.hoge = function(){ return this.nodeName; }; alert(getId('TEST').hoge()); 単純にprototype.jsやjQueryを使う方が便利かもしれませんが、 自由に拡張したいのなら、自作は融通が利いていいと思います。
その他の回答 (4)
- himajin100000
- ベストアンサー率54% (1660/3060)
メモ: >IEは確かに出来ないですね。知りませんでした。 IE8: http://d.hatena.ne.jp/amachang/20090115/1231989477 #新機能、ってぐらいだから…
お礼
ありがとうございます。参考にします。 数々の回答をしてくださって、皆さん本当にありがとうございました。 みなさんに20ポイントを差し上げたいくらいです。 この場で、お礼させていただきます。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
attachEvent('onload', function(){ for(var i=0, es=document.getElementsByTagName('*');es[i];i++) es[i].hoge=function(){...}; } ); とか。
お礼
なるほど…。 動作が重くなりそうですが、この方法も参考にします。 ありがとうございました。
- babu_baboo
- ベストアンサー率51% (268/525)
IEだったらどうする?
お礼
どうすればいいのでしょうか…?
- think49
- ベストアンサー率59% (285/482)
HTMLElementかな? こんな感じで使います。 /* 対象ノードを削除 */ HTMLElement.prototype.removeNode = function(){ return this.parentNode.removeChild(this); }
お礼
試してみたところ、No.2さんの言うとおり、IEでは動きませんでした… しかし、他のブラウザでは動くものもあったので、参考にさせていただきます。 ありがとうございました。
補足
あ、そういう方法もあるのですか! 参考になります。