• ベストアンサー

document.getElementById() で返されるオブジェクトについて

日本語で上手く説明できないのですが、 document.getElementById()で返されるオブジェクトに共通して使える関数を作成したいのです。 大体、こんな感じです。 Object.prototype.hoge = function(){...}; document.getElementById("ID").hoge(); しかし、この方法ではhogeは実行されないので、どうもObjectじゃないようなのです。 代わりに何を使えば良いのか、また、それが分かるサイトをご存知の方は、ご教示願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.4

> 試してみたところ、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を使う方が便利かもしれませんが、 自由に拡張したいのなら、自作は融通が利いていいと思います。

kura07
質問者

補足

あ、そういう方法もあるのですか! 参考になります。

その他の回答 (4)

回答No.5

メモ: >IEは確かに出来ないですね。知りませんでした。 IE8: http://d.hatena.ne.jp/amachang/20090115/1231989477 #新機能、ってぐらいだから…

kura07
質問者

お礼

ありがとうございます。参考にします。 数々の回答をしてくださって、皆さん本当にありがとうございました。 みなさんに20ポイントを差し上げたいくらいです。 この場で、お礼させていただきます。

回答No.3

attachEvent('onload', function(){ for(var i=0, es=document.getElementsByTagName('*');es[i];i++) es[i].hoge=function(){...}; } ); とか。

kura07
質問者

お礼

なるほど…。 動作が重くなりそうですが、この方法も参考にします。 ありがとうございました。

回答No.2

IEだったらどうする?

kura07
質問者

お礼

どうすればいいのでしょうか…?

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

HTMLElementかな? こんな感じで使います。 /* 対象ノードを削除 */ HTMLElement.prototype.removeNode = function(){ return this.parentNode.removeChild(this); }

kura07
質問者

お礼

試してみたところ、No.2さんの言うとおり、IEでは動きませんでした… しかし、他のブラウザでは動くものもあったので、参考にさせていただきます。 ありがとうございました。

関連するQ&A