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 代码。

如果您想将 a 添加hello()到此特定元素,只需分配它:

x.hello = hello;

this现在hello()将指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 回答