Vanilla JavaScript每个功能都由用户控制
Vanilla JavaScript each function user controlled
所以我已经编写了一些像jQuery这样的每个函数,老实说,它们很好,但我开始思考,如果手头的用户不想从0开始,或者想操作迭代器,该怎么办。我已经尝试了很多方法,但它似乎要么崩溃,要么导致无限循环。下面是一些例子。
//a being an array of elements
_$(a).each(function(i){
console.log(i);
i++;
});
//backend js
each:function(fn){
var i = fn[0]; // equals the first argument in the callback
for(i=0;i<this.length;)
fn.call(this[i],i);
return this;
},
下一个示例
//a being an array of elements
var inta = 6;
_$(a).each(function(i){
console.log(i);
},inta++);
//backend js
each:function(fn,iterator){
var len = this.length;
var ct = iterator;
while(ct < len)
fn.call(this[ct],ct);
return this;
},
还有一些例子,它们也不起作用。所以问题是如何像上面的第一个例子一样在函数内部操作迭代器。如果不可能,那也没关系,只是对这种奇怪的可能性感到好奇。
所以我上面从map
、filter
、reduce
、some
、every
中读到的内容,它们无法满足我的需求,因为我正在编写一个小型的最小库。所以我需要确切地知道迭代什么,在我的例子中是this
,但只有this[INT]
。因此,我在函数后面创建了一个可选参数,通过.添加到迭代器中
each:function(fn,add){
/*
First check if add is assigned
If it is not assign it to be 1 + 1 (i++)
If it is, make sure it is not 0 (causing an infinite loop)
And that will result in ( i + add)
*/
add = 0 !== add && add || 1;
for(var i=0;i<this.length;i = i + add)
fn.call(this[i],i);
return this;
}
所以用例应该是。
var domElements = document.querySelectorAll('*'); //10 items per se
_$(domElements).each(function(i){
console.log(i);
},2);
//logs
//0 2 4 6 8
目前,这只是一个非常基本的迭代器,就像我所说的那样,对于一个没有太多"牛市"的小型方便库。
相关文章:
- 如何在主页的弹出窗口中从向导中的用户控制中获取ControlToValidate ID-javascript asp.n
- 如何通过脚本访问用户控制值
- 使用用户控制在Basic HTML播放器中播放Youtube视频
- Vanilla JavaScript每个功能都由用户控制
- 用户控制(.ascx)和java脚本函数
- 如何为用户控制编写正确的反应代码
- 如何在 JavaScript 中获取用户控制
- asp.net多用户控制客户端id问题
- 如何使用javascript在用户控制页中获取父页名称
- 我正在尝试管理一个网页的少数用户控制
- 有没有办法将函数与用户控制关联起来
- 如何获得web用户控制'的文本框值
- 用户控制按钮的动作
- 用户控制上的链接在同一页面中被多次引用
- 如何在NetSuite suite SSv2中设置用户控制已保存搜索条件
- 如何在网页上制作用户控制的幻灯片
- Javascript在用户控制是不加载在kentico CMS
- Javascript不能从ASP调用.NET用户控制
- CSS / JS用户控制的阴影效果
- 如何提供用户控制在spring MVC web应用程序