javascript中的函数
我对javascript还不熟悉,我一直在胡闹。我正在检查jquery,我想看看我是否可以创建一些东西来做同样的事情。这是我的js文件javascript中的函数,javascript,Javascript,我对javascript还不熟悉,我一直在胡闹。我正在检查jquery,我想看看我是否可以创建一些东西来做同样的事情。这是我的js文件 //returns a dom var $ = function(selector) { return document.querySelector(selector); }; //adds something to the dom var append = function(value) { this.innerHTML +
//returns a dom
var $ = function(selector) {
return document.querySelector(selector);
};
//adds something to the dom
var append = function(value) {
this.innerHTML += value;
};
//clears dom
var empty = function() {
while (this.lastChild) this.removeChild(this.lastChild);
};
当我调用
$('#test')
时,我得到了id为test的dom。当我调用$('#test').append('hi there')
时,它会工作。但是,当我尝试$('#test').empty()时,我得到一个未捕获的类型错误:$(…)。empty不是一个函数
知道为什么吗?如果我做错了什么,请告诉我。谢谢,您的函数没有添加到DOM元素的原型链中(这不是一个好主意),因此它们不能作为DOM元素的方法调用
工作正常,因为DOM节点已经有了一个名为append
的方法,它与存储在名为append
的变量中的函数无关
jQuery的工作原理是创建一个容器对象,该对象包含一组DOM元素,并有自己的方法。例如:
var $ = function(selector) {
var objects = document.querySelectorAll(selector);
return {
append: function ( ) {
// do something to `objects` here
},
empty: function ( ) {
},
};
};
JQuery定义变量$
,因此当您执行var$=…
时,您将覆盖JQuery的定义。您的append
函数之所以有效,是因为这是一个窗口。@Tibrogargan他没有尝试使用jQuery,而是尝试实现类似的功能。您正在创建名为append()
和empty()
的单独函数,因此通过将它们从$
变量链接,它们将不可用。换句话说,您不能执行$.empty
,因为empty
不是$
变量的一部分。当我尝试.append()时,我很兴奋,因为我认为我做了一些正确的事情,我想不是。谢谢你的帮助help@bena很抱歉让你失望了,但最好现在就知道。如果您想继续在我的答案中“摆弄”代码,可以从querySelectorAll
切换到var object=querySelector
(只选择一个对象),然后使用object.innerHTML
实现您自己的附加。您还可以在函数中添加一个console.log
,以确认使用的是您自己的append,而不是内置append。