Javascript 嵌套函数不起作用

Javascript 嵌套函数不起作用,javascript,function,scope,nested,Javascript,Function,Scope,Nested,嘿,我是javascript新手,我不能让嵌套函数工作,我只是不明白为什么。范围有问题吗?thx很多 $(document).ready(function(){ var prepocet = function(smer, poradie, pocet_obrazkov) { if (smer == "left") { if (pozicia - 1 < 1) { return pocet_obrazkov } else

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

$(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");

  });
});
$(文档).ready(函数(){
var PREPECET=功能(smer、poradie、pocet_obrazkov){
如果(smer==“左”){
if(pozicia-1<1){
返回pocet_obrazkov
}否则{
返回波齐西亚-1
};
}否则{
如果(pozicia+1>pocet_obrazkov){
返回1
}否则{
返回pocet_obrazkov+1
};
};
};
$(“body”)。在(“click”、“.arrow”,function()上{
var smer=“左”
var pocet_obrazkov=$(this.parent().parent().next(“.seria”).children().length;
var pozicia=$(this.parent().parent().next(“.seria”).children().index(“.on”)+1;
if($(this).hasClass(“箭头左”)){
smer=“左”
}否则{
smer=“对”
};
var nova_pozicia=Prepecet(smer、poradie、pocet_obrazkov);
$(this).parent().parent().next().children(“+pozicia+”)).hide().addClass(“off”).removeClass(“on”);
$(this).parent().parent().next().children(“#iddv img:nth child(“+nova_pozicia+”))).show().addClass(“开”).removeClass(“关”);
});
});

是,这是一个范围问题,您需要将
prepcet
的声明移到
$(document).ready()函数的外部,因为该函数存在于此。

检查JavaScript控制台是否有错误。我猜你会看到
未定义的
:函数参数名是
poradie
,但是在函数中,你使用了
pozicia
。再往下看,在另一个范围中,您定义了
pozicia
,但是
prepcet()
看不到这一点。

您是对的,谢谢!我怎么能看不出我的变量名是错误的呢。