我已经编写了这段代码(这是一个代码片段)似乎没有用。我把它隔离到了这里。
grab = window.document.getElementById;
grab("blueBox") // i.e. grab("blueBox").onclick [...]
是否可以在javascript中创建对本机函数的引用。我正在使用抓取的元素做一些事情,我只是把它留了下来。抓取功能似乎不起作用。
我正在使用FireFox的最新版本
答案 0 :(得分:3)
你这样做的方式会搞乱函数的this
值的分配。
grab = window.document.getElementById;
grab("blueBox") // i.e. grab("blueBox").onclick [...]
此处this
将是global
对象。尝试:
grab.apply(window.document, ["blueBox"])
或在较新的浏览器中:
grab = window.document.getElementById.bind(window.document);
直接定义this
将会是什么。
答案 1 :(得分:1)
function grab(id) {
return window.document.getElementById(id);
}
grab("blueBox");
答案 2 :(得分:1)
这里的第一步始终是JavaScript控制台。 Firebug是你的朋友。如果对您没有任何意义,请告诉我们错误消息。
同时,这是一个解决方法:
var grab = function(id) { return window.document.getElementById(id); }
答案 3 :(得分:0)
原因是因为函数getElementById
未被调用为document
的方法,因此其此关键字不会引用正确的对象。按照其他答案中的建议使用调用表示当此引用该文档时,getElementById
可以正常工作。