2014-07-22 92 views
0

嘿,我是新来的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"); 

    }); 
}); 

回答

0

检查JavaScript控制台是否有错误。我的猜测是你会在undefined看到一些东西:函数参数名称是poradie,但在函数中,你使用pozicia。再往下,在不同的范围内,你定义了pozicia,但是prepocet()看不到。

+0

你是对的,谢谢!我怎么看不到我的变量名是错的。 – user3864092

0

是的,这是一个范围问题,你需要移动的prepocet声明的$(document).ready()功能之外,因为这是该函数存在。