首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript for循环小探测器

JavaScript for循环小探测器
EN

Stack Overflow用户
提问于 2013-06-11 23:13:57
回答 2查看 82关注 0票数 0

我这里有一个关于for循环的小问题:

代码语言:javascript
运行
复制
var wide = "700px";
        var flat = "5px";

        var pages = new Array("home","links","aktuell","kontakt");

        for(var i=0;i<pages.length;i++) {
            $("."+pages[i]).bind("click", function() {
                for(var j=0;j<pages.length;j++) {
                    var width;
                    if(pages[j] != pages[i])
                        width = flat;
                    else
                        width = wide;
                    $("#"+pages[j]).animate({width: width}, "slow");
                }       

            });
            $("#"+pages[i]).bind("click", function() {
                for(var k=0;k<pages.length;k++) {
                    var width;
                    if(pages[k] != pages[i])
                        width = flat;
                    else
                        width = wide;
                    $("#"+pages[k]).animate({width: width}, "slow");
                }

            });
        }

实际上,它应该生成以下输出,但为什么没有呢?

代码语言:javascript
运行
复制
    $(".home").bind("click", function() {
      $("#home").animate({width: wide}, "slow");
      $("#links").animate({width: flat}, "slow");
      $("#aktuell").animate({width: flat}, "slow");
      $("#kontakt").animate({width: flat}, "slow");
    });  
    $("#home").bind("click", function() {
      $("#home").animate({width: wide}, "slow");
      $("#links").animate({width: flat}, "slow");
      $("#aktuell").animate({width: flat}, "slow");
      $("#kontakt").animate({width: flat}, "slow");
    });
    $(".links").bind("click", function() {
      $("#links").animate({width: wide}, "slow");
      $("#home").animate({width: flat}, "slow");
      $("#aktuell").animate({width: flat}, "slow");
      $("#kontakt").animate({width: flat}, "slow");

    });
     $("#links").bind("click", function() {
      $("#links").animate({width: wide}, "slow");
      $("#home").animate({width: flat}, "slow");
      $("#aktuell").animate({width: flat}, "slow");
      $("#kontakt").animate({width: flat}, "slow");

    });     
    $(".aktuell").bind("click", function() {
      $("#links").animate({width: flat}, "slow");
      $("#home").animate({width: flat}, "slow");
      $("#aktuell").animate({width: wide}, "slow");
      $("#kontakt").animate({width: flat}, "slow");

    });
    $("#aktuell").bind("click", function() {
      $("#links").animate({width: flat}, "slow");
      $("#home").animate({width: flat}, "slow");
      $("#aktuell").animate({width: wide}, "slow");
      $("#kontakt").animate({width: flat}, "slow");

    });     
    $(".kontakt").bind("click", function() {
      $("#links").animate({width: flat}, "slow");
      $("#home").animate({width: flat}, "slow");
      $("#aktuell").animate({width: flat}, "slow");
      $("#kontakt").animate({width: wide}, "slow");
    });
    $("#kontakt").bind("click", function() {
      $("#links").animate({width: flat}, "slow");
      $("#home").animate({width: flat}, "slow");
      $("#aktuell").animate({width: flat}, "slow");
      $("#kontakt").animate({width: wide}, "slow");
    });

有人能找到错误吗?我试着把它全部作为输出,它工作得很好,但当我尝试在网站上使用它时,它就不起作用了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-11 23:23:13

代码语言:javascript
运行
复制
var wide = "700px";
var flat = "5px";
var pages = ["home","links","aktuell","kontakt"];
var selectors = [];

for(var i in pages) {
    selectors.push('.' + pages[i]);
    selectors.push('#' + pages[i]);
}

$(selectors.join()).bind("click", function() {
    for(var j=0;j<pages.length;j++) {
        var width;
        if(pages[j] != pages[i])
            width = flat;
        else
            width = wide;
        $("#"+pages[j]).animate({width: width}, "slow");
    }
});
票数 -1
EN

Stack Overflow用户

发布于 2013-06-11 23:18:40

当你写下这篇文章时:

代码语言:javascript
运行
复制
$("#"+pages[j]).animate({width: width}, "slow");

你没有输出任何东西,你只是在执行它。如果你需要动态生成的javascript,我建议使用服务器端代码来动态生成它。

但是另一个,也可能是最好的选择,是让你的javascript更加全球化,因为它是非常多余的……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17047662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档