我之前曾问过一个关于如何以更短的方式编写代码块的问题,我得到了答案,我开始根据自己的情况调整它。但我遇到了一个小问题,这是我正在运行的代码:
var default_cluster_options = {
limits : [ { min: 1224, items: 8 }, { min: 954, items: 6 }, { min: 624, items: 4 }, { min: 0, items: 2 } ]
};
var default_plugin_options = {
containerID : "",
first : false,
previous : false,
next : false,
last : false,
startPage : 1,
perPage : 1,
midRange : 6,
startRange : 1,
endRange : 1,
keyBrowse : false,
scrollBrowse: false,
pause : 0,
clickStop : true,
delay : 50,
direction : "auto",
animation : "fadeIn",
links : "title",
fallback : 1000,
minHeight : true,
callback : function(pages, items) {}
};
var Cluster = function(cluster_options, plugin_options) {
this.options = $.extend({}, default_cluster_options, cluster_options);
this.plugin_options = $.extend({}, default_plugin_options, plugin_options);
this.limits = this.options.limits;
this.inititate_shop();
};
Cluster.prototype.initiate_plugin = function(plugin_navigation, plugin_options) {
var options = $.extend({}, this.plugin_options, plugin_options);
return $(plugin_navigation).jPages(options);
};
Cluster.prototype.inititate_shop = function() {
for (var i = 0; this.viewport_width <= this.limits[i].min; i++) {
log(this.limits[i].min);
log(this.viewport_width);
this.initiate_plugin('.shop-items-navigation', {
containerID : "shop-items-wrapper",
perPage : this.limits[i].items,
midRange : 8,
animation : "fadeIn",
links : "blank",
keyBrowse : true,
callback : function(pages) {
log(pages.current);
}
});
}
};
var cluster = new Cluster();
其中的一些代码可能没有意义,因为还有其他代码块,但我认为所有与我的问题相关的代码都可能导致问题。
我的问题是for()
属性中的Cluster.prototype.inititate_shop
循环。我在控制台中看到没有错误,但当我试图查看另一个循环是否适用于this.limits
变量(它是一个包含4个对象的数组)时,它确实存在。
所以这就是为什么我不明白为什么函数不起作用或for()
循环会破坏我在这里问是否有人发现我不知道的东西(我有丢失的东西的历史)。
答案 0 :(得分:1)
从上面的评论中 - 问题是限制列表中的最高最小值是1224,但您的视口宽度是1366,所以:
this.viewport_width <= this.limits[i].min;
永远不会计算为true,并且永远不会执行for循环中的代码。
编辑2
如果你打破了进行检查的陈述,那该怎么办:
Cluster.prototype.inititate_shop = function() {
for (var i = 0; i < this.limits.length; i++) {
if (this.viewport_width >= this.limits[i].min){
log(this.limits[i].min);
log(this.viewport_width);
this.initiate_plugin('.shop-items-navigation', {
containerID : "shop-items-wrapper",
perPage : this.limits[i].items,
midRange : 8,
animation : "fadeIn",
links : "blank",
keyBrowse : true,
callback : function(pages) {
log(pages.current);
}
});
return false; // to break out of loop
}
}
};