2014-07-22 3 views
0

안녕하세요 저는 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

JavaScript 콘솔에서 오류가 있는지 확인하십시오. 내 생각 엔 당신이 뭔가를 볼 것입니다 undefined : 함수 매개 변수 이름은 poradie이지만 함수에서 pozicia을 사용합니다. 더 아래로, 다른 범위에서 pozicia을 정의하지만 prepocet()은 그것을 볼 수 없습니다.

+0

맞아, 고마워! 변수 이름이 잘못되었다는 것을 어떻게 알 수 있습니까? – user3864092

0

예이 범위의 문제를 THX, 당신은 함수가 존재하는 곳이기 때문에 $(document).ready() 기능의 외부 prepocet의 선언을 이동해야합니다.

관련 문제