我想要someElement.getElementById
的快捷方式。
但是,我不应该拨打.getElementById()
,而是如此说,我只是说,.foo()
?
例如,我可以说:
var element = document.foo("sampleID");
element.style.color = "red";
将ID为color
的元素的#sampleID
样式更改为红色。
或者:
var element = document.foo("someDiv").foo("myElement");
element.style.backgroundColor = "blue"
将身份someDiv
的ID为myElement
的孩子的文件的孩子的背景颜色更改为蓝色。
以更清晰的方式,这将寻找一个元素,该元素是文档的子元素,并具有ID someDiv
。然后它会寻找具有id myElement
的孩子。然后它会将其背景颜色更改为蓝色。
我试图在网上搜索这些类型的功能,但我不知道它们叫什么,所以我没有运气。
答案 0 :(得分:1)
function foo(param) {
doSomethingWith(param);
}
......并且这样称呼它:
foo(param);
但我怎么能这样做,所以你这样称呼呢?
param.foo();
不,你没有。 param是不能调用函数的参数。
通过定义需求的功能并返回其基础对象。
您可以为ClassName
和其他人提供相同类型的功能。最好使用jQuery
代替创建快捷方式功能。它具有更多实用性和其他基本和先进的使用方法。
var byId = function(id) {
return document.getElementById(id);
}
alert(byId('MY_ID').innerHTML);
<p id="MY_ID">Hi</p>
答案 1 :(得分:1)
如果您想将getElementById
别名为foo
,那么无论如何,正如其他答案/评论所示,请
document.foo = document.getElementById;
可能不是一个好主意。
但您似乎想要在具有其他ID的元素内找到具有特定ID的元素。但ID是独一无二的。因此,不需要在具有另一特定ID的元素内搜索具有一个特定ID的元素。更基本的是,getElementById
仅在document
上定义,而不是在任意元素上定义。
因此,实际上没有办法搜索具有一个ID的元素,其中一个ID与getElementById
的另一个想法相同;您需要使用document.querySelector('#someDiv #myElement')
,但在所有合理的情况下,这完全等同于document.querySelector('#myElement')
,这与document.getElementById('myElement')
完全相同。
答案 2 :(得分:0)
简短回答:
document.foo = HTMLElement.prototype.foo = document.getElementById.bind(document);
允许您执行document.foo('id').foo('id2')
-
document
是一个对象,getElementById
是一个可以分配给这样一个对象的属性的函数。
如果您想让document.foo
像[{1}}一样工作,请执行
document.getElementById
如果你想在所有document.foo = document.getElementById
上创建一个函数,那么你应该
HTMLElement
你通常不能在HTMLElement.prototype.foo = function() { ... }
上getElementById
,因为你应该在文档上调用它(id应该是唯一的,因此它会有相同的结果)。如果你真的想这样做,
HTMLElement
-
更一般地说,对于HTMLElement.prototype.foo = document.getElementById
的大多数值,您可以设置param
您想要的任何内容,包括函数
param.foo =
如果您希望将其应用于特定类型的所有元素,则应将其附加到元素的param.foo = function() { ... }
。
例如,如果您的类型为prototype
,那么您可以将该函数附加到Bar
Bar.prototype
Bar.prototype.foo = function() { ... }
的实例将Bar
函数可调用,如
foo()