所以我有一个简单的类,几乎没有属性。我使用原型制作方法添加了一些方法,这些方法返回this
,所以我可以将tham链接在一起。
Get
方法找到所有元素并将其放入allCurrentElements
,这是一个数组(或者至少我认为是)。当我使用CreateElement
method时,它只是创建了element并尝试将其推送到现有的array allCurrentElements
。
要使用它,只需编写var a = _h.Get('p').CreateElement('div')
。这是我遇到错误的地方Uncaught TypeError: this.allCurrentElements.push is not a function(…)
。
如果我尝试使用索引分配新创建的元素,则它不会引发错误,但是此元素不会出现在数组中。
var _h = (function(){
var Helper = function(){
this.allCurrentElements = [];
}
Helper.prototype.Get = function(query){
this.allCurrentElements = document.querySelectorAll(query);
return this;
}
Helper.prototype.CreateElement = function(el, attr) {
var elem = document.createElement(el);
for (var a in attr) {
elem[a] = attr[a];
}
//this.allCurrentElements[this.allCurrentElements.length] = elem;
this.allCurrentElements.push(elem);
return this;
}
return new Helper();
})();
您必须检查Document.querySelectorAll()
文档https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
返回所有匹配元素节点的非活动NodeList。
NodeList的用法与数组非常相似,很容易在其上调用Array.prototype方法,但是NodeList对象没有任何熟悉的Array方法。
因此,您必须像这样遍历NodeList:
Array.prototype.forEach.call(document.querySelectorAll(query), function(element){
allCurrentElements.push(element);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句