javascript - 为 document.getElementById 和 document.createElement 使用变量

标签 javascript variables

<分区>

Possible Duplicate:
Why can’t I have a direct reference to document.createElement?

我对 Js 很陌生,一直在玩弄它。 由于 document.getElementByIddoucment.createElement 很长,我决定将它放在一个变量中; 例如 var d = document.createElement;

  1. 但是当我像 var someElement = d("p"); 那样调用它时,我得到“TypeError: Illegal invocation”,我不确定那是什么意思。

  2. 如果我分离 document 对象,var d = document; 然后给它一个像这样的属性:d.e = d.createElement; 然后用它来创建一个元素 someElement = d.e("p") 它起作用了。

有人可以解释导致 1. 失败的原因以及 2. 为什么有效吗? 提前谢谢你。

最佳答案

您需要将它们包装在一个函数中,以便您可以从 document 对象中调用它们。

var d = function(name) {
    return document.createElement(name);
};

这只是createElement 方法实现的要求。它需要知道应该从哪个文档创建元素。

当你从一个对象中分离一个方法时,该方法没有原始对象的内存。

这就是它起作用的原因:

d.e("p");

由于 e 是对 createElement 方法的引用,它是从 d 调用的,它是对 的引用>document,你实际上在做同样的事情:

document.createElement("p");

关于javascript - 为 document.getElementById 和 document.createElement 使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210047/

相关文章:

javascript - 使用 JavaScript 中的键从 JSON 中查找值

javascript - 在调用 html() 之前是否需要执行 unbind() 或 off()

variables - 如何访问过程之外的变量

Java 错误 - 找不到符号 - 变量是

javascript - JS : Making two functions do the same thing

Java 与构造函数中参数传递的混淆

JavaScript - Map() 增量值

JavaScript 视差效果, "missing pixels"

javascript - 如何使用 querySelector() 在 javascript 中查找唯一的类 div id

使用 jekyll 和 github 页面构建静态站点时可用的变量