Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 for循环在满足条件时不执行代码_Javascript_Jquery_Arrays_Object_For Loop - Fatal编程技术网

Javascript for循环在满足条件时不执行代码

Javascript for循环在满足条件时不执行代码,javascript,jquery,arrays,object,for-loop,Javascript,Jquery,Arrays,Object,For Loop,我之前曾问过一个问题,关于如何以更短的方式编写代码块,我得到了答案,并开始根据自己的情况进行调整。但我遇到了一个小问题,下面是我正在运行的代码: 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 = {

我之前曾问过一个问题,关于如何以更短的方式编写代码块,我得到了答案,并开始根据自己的情况进行调整。但我遇到了一个小问题,下面是我正在运行的代码:

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();
var默认值\u集群\u选项={
限制:[{min:1224,项数:8},{min:954,项数:6},{min:624,项数:4},{min:0,项数:2}]
};
var默认插件选项={
集装箱运输,
第一:错,
上一篇:错,
下一个:错,
最后:错,
起始页:1,
每页:1,
中档:6,
星际旅行:1,
范围:1,,
keyBrowse:false,
滚动浏览:错误,
暂停:0,
点击停止:正确,
延误:50,
方向:“自动”,
动画:“fadeIn”,
链接:“标题”,
后退:1000,
是的,
回调:函数(页、项){}
};
var Cluster=函数(集群选项、插件选项){
this.options=$.extend({},默认集群选项,集群选项);
this.plugin\u options=$.extend({},默认插件选项,插件选项);
this.limits=this.options.limits;
这是一家新开的商店;
};
Cluster.prototype.initiate_plugin=函数(插件导航、插件选项){
var options=$.extend({},this.plugin\u options,plugin\u options);
返回$(插件导航).jPages(选项);
};
Cluster.prototype.inititate_shop=function(){

对于上述注释中的(var i=0;this.viewport_width),问题在于限制列表中的最大最小值为1224,但视口宽度为1366,因此:

this.viewport_width <= this.limits[i].min;
this.viewport\u width=this.limits[i].min){
log(this.limits[i].min);
日志(此视窗宽度);
此.initiate_插件(“.shop items navigation”{
集装箱:“商店物品包装”,
perPage:this.limits[i]。项目,
中档:8,
动画:“fadeIn”,
链接:“空白”,
是的,
回调:函数(页){
日志(当前页);
}
});
返回false;//以中断循环
}
}
};

您是否测试了该条件-viewport_width和this.limits[i].min的值是多少?噢,对不起,
this.viewport_width
是窗口的宽度。在该数组中,在对象内部设置限制。是的,我已经测试过了,但是什么都没发生。这个值是多少。视窗宽度-数字?在我的例子中是全屏幕1366pxOK,但这怎么能被修复,因为这可能比拥有一个980px宽的小设备更频繁。有解决办法吗?是的,我的第一个想法是这样的,但有点奇怪:)关于如何重写逻辑的一些建议?我喜欢在数组或对象中循环,而不是使用
if()。。。else if()
语句:)更改比较的方向,这样,您就不用搜索小于min的入口宽度,而是搜索更大的值,这样限制数组中的最后一个条目就是默认情况,所以使用(var i=3;this.viewport\u width>=this.limits[i].min;i--)的逻辑
可以修复它吗?或者它不能适用于所有情况?我已经测试了@Dave的逻辑,但它是错误的:)(难怪)。这一逻辑看起来如何?因为我现在想不出任何可行的方法,除了第一个有很大价值的建议:)
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
        }
    }
};