【发布时间】:2017-12-06 22:31:57
【问题描述】:
这只是一个训练练习。 为了解决这个问题,我使用 material
编写了这样的脚本 (function(window) {
function smp(selector) {
return new smpObj(selector);
}
function smpObj(selector) {
this.length = 0;
if (!selector ) {
this.el = [];
return this;
}
if (selector.nodeType ) {
this.el = selector;
this.length = 1;
return this;
} else if(selector[0]==='#'){
this.el = document.getElementById(selector.slice(1, selector.length));
this.length = 1;
return this;
} else if(selector[0]==='.'){
this.el = document.getElementsByClassName(selector.slice(1, selector.length));
this.lenghth=this.el.length
return this;
}
else return null;
}
})(window);
然后我尝试这样调用:
smp('body');
但浏览器找不到我的 smp 定义。
将来我想添加一些方法来使用它(例如,改变颜色):
smp('.myClass').method('attr')
如果有人能告诉我我的错误,我将不胜感激。
更新: 添加方法仍然存在一些问题,例如:
smp('.myClass').method('attr')
我试过这样:
(function color(smp) {
window.smp.prototype.changeColor = function() {
for (var i = 0; i < this.length; i++)
this.el[i].style.color = color;
return this;
};
})(smp);
【问题讨论】:
-
selector是一个字符串...字符串没有属性nodeType
标签: javascript html css dom frameworks