嘿我是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");
});
});
答案 0 :(得分:0)
是的,这是一个范围问题,您需要将prepocet
的声明移到$(document).ready()
函数之外,因为这是函数所在的位置。
答案 1 :(得分:0)
检查JavaScript控制台是否有错误。我的猜测是,您会看到undefined
的内容:函数参数名称为poradie
,但在函数中,您使用的是pozicia
。再往下,在不同的范围内,您可以定义pozicia
但prepocet()
无法看到。