嵌套函数不起作用

时间:2014-07-22 10:11:43

标签: javascript function scope nested

嘿我是javascript的新手,我无法让嵌套函数工作,我只是不明白为什么。范围有问题吗?很多

$(document).ready(function(){
  var prepocet = function(smer, poradie, pocet_obrazkov) {

    if (smer == "left") {
        if (pozicia - 1 < 1) {
            return pocet_obrazkov
        } else {
            return pozicia - 1
        };
    } else {
        if (pozicia + 1 > pocet_obrazkov) {
            return 1
        } else {
            return pocet_obrazkov + 1
        };
    };
  };

  $("body").on("click", ".arrow", function() {
    var smer = "left"
    var pocet_obrazkov = $(this).parent().parent().next(".seria").children().length;
    var pozicia = $(this).parent().parent().next(".seria").children().index(".on") + 1;


    if ($(this).hasClass("arrow left")) {
        smer = "left"
    } else {
        smer = "right"
    };

    var nova_pozicia = prepocet(smer, poradie, pocet_obrazkov);


    $(this).parent().parent().next().children('#iddv img:nth-child(' + pozicia + ')').hide().addClass("off").removeClass("on");
    $(this).parent().parent().next().children('#iddv img:nth-child(' + nova_pozicia + ')').show().addClass("on").removeClass("off");

  });
});

2 个答案:

答案 0 :(得分:0)

是的,这是一个范围问题,您需要将prepocet的声明移到$(document).ready()函数之外,因为这是函数所在的位置。

答案 1 :(得分:0)

检查JavaScript控制台是否有错误。我的猜测是,您会看到undefined的内容:函数参数名称为poradie,但在函数中,您使用的是pozicia。再往下,在不同的范围内,您可以定义poziciaprepocet()无法看到。