2

という関数がありますhello()

次に、DOM要素を取得しますx = document.getElementById("test");

この関数を次のように動作させるにはどうすればよいx.hello();ですか?

4

4 に答える 4

3

要素に関数を追加する必要がある場合は、そのプロトタイプを変更する必要があります。

Element.prototype.hello = function() {
}

これは、どの要素を選択しても機能します。

要素のスタイルを変更したい場合、次のようになります。

Element.prototype.hello = function() {
    this.style.color = 'blue';
}

以下のコメントで説明されているように、これは必ずしも良い考えではありません。その理由について説明しているブログ投稿は次のとおりです: http://perfectionkills.com/whats-wrong-with-extending-the-dom/

したがって、できることは、Elements で動作するユーティリティ クラスを作成することです。

それはどのように見えますか?

var DOM = {};
DOM.hello = function (element, worldParam) {
    element.style.color = worldParam;
}

などなど。

したがって、これを使用するには、次のようにします。

DOM.hello(document.getElementById('#test'));
于 2012-10-08T07:49:33.783 に答える
2

ページ上のすべての DOM 要素に を追加する場合は、そのプロトタイプを変更する必要がありhello()ます。

Element.prototype.hello = hello;

ただし、変更はページ上のほとんどすべての js コードに影響する可能性があるため、そうすることはお勧めしません。

hello()この特定の要素にを追加する場合は、次のように割り当てます。

x.hello = hello;

thishello()参照するようになりましたx

于 2012-10-08T07:50:22.070 に答える
1
x = document.getElementById("test");
x.prototype.hello = function() { // your function }

x.hello() を使用できるようになりました。

于 2012-10-08T07:49:31.083 に答える
1

これをチェックしてください。

このリンクでは、jsfiddle のサンプル スクリプトが表示されます。

于 2012-10-08T07:51:19.143 に答える