Javascript 为.getElementById创建快捷方式

Javascript 为.getElementById创建快捷方式,javascript,Javascript,我想要someElement.getElementById的快捷方式 但是我不调用.getElementById(),我怎么能让它这样,我只说,.foo() 例如,我可以说: var element = document.foo("sampleID"); element.style.color = "red"; 将id为#sampleID的元素的颜色样式更改为红色 或: 将文档id为someDiv的子元素id为myElement的背景色更改为蓝色 更清楚地说,这将查找文档的子元素,该元素具有I

我想要
someElement.getElementById
的快捷方式

但是我不调用
.getElementById()
,我怎么能让它这样,我只说,
.foo()

例如,我可以说:

var element = document.foo("sampleID");
element.style.color = "red";
将id为#sampleID的元素的
颜色
样式更改为红色

或:

将文档id为
someDiv
的子元素id为
myElement
的背景色更改为蓝色

更清楚地说,这将查找文档的子元素,该元素具有ID
someDiv
。然后它将查找id为myElement的子级。然后它会将背景颜色更改为蓝色

我试图在互联网上搜索这些类型的函数,但我不知道它们叫什么,所以我没有运气

function foo(param) {
    doSomethingWith(param);
}
…并这样称呼它:

foo(param);
但是我怎么能让你这样称呼它呢

参数foo()

不,你没有。param是无法调用函数的参数

通过定义需求的功能并返回其基本对象

您可以为
ClassName
和其他函数创建相同类型的函数。最好使用
jQuery
而不是创建快捷功能。它有更多的实用性和其他基本的先进的方法使用。
var byId=函数(id){
返回文档.getElementById(id);
}
警报(byId('MY_ID').innerHTML)

您好

简短回答:

document.foo = HTMLElement.prototype.foo = document.getElementById.bind(document);
将允许您执行
document.foo('id').foo('id2')

--

document
是一个对象,
getElementById
是一个可以分配给此类对象属性的函数

如果要使
document.foo
document.getElementById
一样工作,请执行以下操作

document.foo = document.getElementById
如果您想在所有
HTMLElement
s上创建一个函数,那么您应该这样做

HTMLElement.prototype.foo = function() { ... }
您通常不能在
HTMLElement
s上执行
getElementById
,因为您应该只在文档上调用它(id应该是唯一的,所以它会有相同的结果)。如果你真的想这么做

HTMLElement.prototype.foo = document.getElementById
--

更一般地说,对于
param
的大多数值,您可以设置
param.foo=
您想要的任何内容,包括函数

param.foo = function() { ... }
如果要将其应用于特定类型的所有元素,则应将其附加到元素的
原型

例如,如果您有一个类型
Bar
,那么您可以将该函数附加到
Bar.prototype
上,如

Bar.prototype.foo = function() { ... }
Bar
的实例上有一个
foo()
函数,可以像

var b = new Bar(); b.foo();

如果您想将
getElementById
别名为
foo
,那么请务必按照其他答案/注释的建议执行

document.foo = document.getElementById;
不过,这可能不是个好主意


但是您似乎希望在具有其他ID的元素中查找具有特定ID的元素。但是ID是唯一的。因此,不需要在具有另一个特定ID的元素中搜索具有一个特定ID的元素。更基本的是,
getElementById
仅在
文档上定义,而不是在任意元素上定义


因此,实际上无法使用
getElementById
在一个元素中搜索一个ID为另一个idea的元素;您需要使用
document.querySelector('#someDiv#myElement')
,但在所有合理的场景中,这完全等同于
document.querySelector('#myElement')
,它完全等同于
document.getElementById('myElement')
。\JamesThorpe我添加了一个示例。这有帮助吗?您可以将任何函数分配给变量或属性:
document.foo=document.getElementById
。这真是个糟糕的主意。不要在内置对象上定义自己的函数。@Xufox那么,我是否可以循环遍历每个元素?ID是唯一的。因此,不需要在具有另一个特定ID的元素中搜索具有一个特定ID的元素。更基本的是,
getElementById
仅在
文档上定义,而不是在任意元素上定义。因此,实际上无法使用
getElementById
在一个元素中搜索一个ID为另一个idea的元素;您需要使用
document.querySelector('#someDiv#myElement')
,但在所有合理的情况下,这完全等同于
document.querySelector('#myElement')
,它完全等同于
document.getElementById('myElement')
。对,除非我想说
警报(document.byId('myu ID').innerHTML)。这正是我所要求的。我真的不想使用JQ,因为我不想在JS中使用太多,也不想为一些小的东西加载整个库。@Quelklef然后创建一个全局函数
$
\u
或任何你想要的东西。没有理由将您的函数附加到
文档
@meagar,但是如果我不想搜索
文档
的子元素而不是某个特定元素,该怎么办?@Quelklef那么您的问题应该更清楚了。没有答案可以解释这个要求,因为你实际上并没有说你想这么做。同样,正确的答案是使用全局函数并在上下文参数中传递。但是是的,正如@meagar的评论所说,这通常是一个非常糟糕的主意。
document.foo = document.getElementById;