javascript - 有很多重复js功能的代码,在可维护的情况下应该怎么去简化代码?
高洛峰
高洛峰 2017-04-11 09:12:01
[JavaScript讨论组]

举个栗子
通过点击不同的tab标签去替换轮播图的src,引用方法如下。
以下这段代码能不能把公共的部分剔除出来,写成构造函数的形式。

   window.onload=function(){
        MarketPreloader();
        MallDesign();
    };
    
    function MarketPreloader(){
        var srcList = ['imgs/57.jpg','imgs/57.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
        var $domlist=$("#change-banner>li img");
        $domlist.each(function (idx, ele) {
             
            if(srcList[idx]){
                ele.setAttribute('src', srcList[idx]);
            }
    
        });
    }

function MallPreloader(){

    var srcList = ['imgs/18071023_164300608000_2.jpg','imgs/18071023_164300608000_2.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
    var $domlist=$("#change-banner>li img");
    $domlist.each(function (idx, ele) {
         
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }

    });
}
function ShopPreloader(){

    var srcList = ['imgs/5290458_114840036316_2.jpg','imgs/5290458_114840036316_2.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
    var $domlist=$("#change-banner>li img");
    $domlist.each(function (idx, ele) {
         
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }

    });
}

function MarketDesign(){
    var srcList = ['imgs/2008111384358912_2.jpg','imgs/57.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
    var $domlist=$("#design-banner>li img");
    $domlist.each(function (idx, ele) {
         
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }

    });
}
function ShopDesign(){
    var srcList = ['imgs/banner-nth-5.png','imgs/57.jpg','imgs/57.jpg','imgs/5290458_114840036316_2.jpg'];
    var $domlist=$("#design-banner>li img");
    $domlist.each(function (idx, ele) {
         
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }

    });
}
function MallDesign(){
    var srcList = ['imgs/banner-nth-1.png','imgs/banner-nth-1.png','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
    var $domlist=$("#design-banner>li img");
    $domlist.each(function (idx, ele) {
         
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }

    });
}



根据大家的评论已经把代码修改如下


    window.onload=function(){
    Preloader(MarketList,domList);
    Preloader(MarketDesignList,domList1);
};

var domList,domList1;
domList=$("#change-banner>li img");
domList1=$("#design-banner>li img");
var MarketList,MallList,ShopList,MarketDesignList,ShopDesignList,MallDesignList;
MarketList=['imgs/57.jpg','imgs/57.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
MallList=['imgs/18071023_164300608000_2.jpg','imgs/18071023_164300608000_2.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
ShopList=['imgs/5290458_114840036316_2.jpg','imgs/5290458_114840036316_2.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
MarketDesignList=['imgs/2008111384358912_2.jpg','imgs/57.jpg','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
ShopDesignList=['imgs/banner-nth-5.png','imgs/57.jpg','imgs/57.jpg','imgs/5290458_114840036316_2.jpg'];
MallDesignList=['imgs/banner-nth-1.png','imgs/banner-nth-1.png','imgs/2008122510134038_2.jpg','imgs/5290458_114840036316_2.jpg'];
function Preloader(srcList,$domlist){
    $domlist.each(function (idx, ele) {
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }
    });
}

但是页面载入的时候

    window.onload=function(){
             Preloader(MarketList,domList);
           Preloader(MarketDesignList,domList1);
   };

这部分没有效果

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
伊谢尔伦
function XXX(srcList,$domlist){
    $domlist.each(function (idx, ele) {
        if(srcList[idx]){
            ele.setAttribute('src', srcList[idx]);
        }
    });
}

用的时候更改参数随便调吖 
PHPz

如果项目基本完成了,项目变动不会太大的情况下,你可以把几个function合并一下,把srcList当做参数传进function中,这样就可以大大减少代码量。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号