Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单的js框架,DOM。(模块样式,尝试使其类似于jQuery样式)_Javascript_Html_Css_Dom_Frameworks - Fatal编程技术网

Javascript 简单的js框架,DOM。(模块样式,尝试使其类似于jQuery样式)

Javascript 简单的js框架,DOM。(模块样式,尝试使其类似于jQuery样式),javascript,html,css,dom,frameworks,Javascript,Html,Css,Dom,Frameworks,这只是一次训练。 为了解决这个问题,我用这个 然后我试着这样打电话: smp('body'); (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('body');
  (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);
但是浏览器找不到我的smp定义。
将来,我想添加一些方法来像这样使用它(例如,更改颜色):

如果有人能告诉我我的错误,我将不胜感激

UPD: 添加方法时仍存在一些问题,如:

  smp('.myClass').method('attr') 
我试过这样做:

smp('body');
  (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);
(功能颜色(smp){
window.smp.prototype.changeColor=函数(){
for(var i=0;i
您链接到的文章中的
模块导出
部分对此进行了解释

为了实际使用函数,您需要将其分配给一个变量,可以是全局变量,也可以是局部变量。你可以在当地说:

var smp = (...)(window)
但这意味着您必须在函数中返回某些内容。因此,在代码末尾,在
}(窗口)之前,返回
smp
函数

return smpSelector
总而言之:

var smp = (function(window) {

    function smpSelector(selector) {
      // ... snip
    }

    function smpObj(selector) {
      // ... snip
    }

    return smpSelector;

 })(window);
最后,如果您希望将其保存在单独的文件中,并且仍然可以访问
smp
,则可以全局分配它。事实上,这就是大多数库,包括
jQuery
所做的:

(function(window) {

    function smpSelector(selector) {
      // ... snip
    }

    function smpObj(selector) {
      // ... snip
    }

    window.smp = smpSelector

 })(window);
现在,我们可以从另一个文件执行以下操作:

 <script src="/path/to/smp/file"></script>
 var foo = smp('something')

var foo=smp('something')

选择器
是一个字符串。。。字符串没有属性
nodeType
Wow,您的回答帮助很大,尤其是最新的编辑(这是我一开始就针对的)。我想我现在明白了,真的很感激。继续给我的朋友编码吧!我还有一个问题(关于添加方法)。如果你能查一下的话,我会非常感激的。我很乐意帮忙,但我建议你为它提出一个新问题,只写下与你现在所做的事情相关的部分。