2013-10-23 1 views
0

저는 항상 함수 외부에서 javascript var를 선언하면 필요에 따라 해당 함수 내에서 사용할 수 있고 사용할 수 있다고 생각했습니다.kineticjs를 사용하는 정의되지 않은 javascript 변수

아래 코드에 문제가 있습니다. get_value 함수를 트리거하는 버튼을 클릭하면 콘솔에서 tween 변수가 정의되지 않았 음을 알립니다. 그 어떤 변화도 가져 오지면

<script> 
     $(document).ready(function() 
     { 
      var timeout_val = 0; 

      var stage = new Kinetic.Stage({ 
       container: 'stage', 
       width: 940, 
       height: 50 
      }); 
      var layer = new Kinetic.Layer(); 

      var line = new Kinetic.Line({ 
       points: [10, 10, 100, 10], 
       stroke: '#FF0000' 
      }); 

      layer.add(line); 
      stage.add(layer); 

      var xTo = stage.getWidth() - 10; 

      var tween = new Kinetic.Tween({ 
       node: line, 
       duration: 5, 
       points: [10, 10, xTo, 10] 
      }); 
     }); 

     function get_value(){ 
      $.ajax({ 
       type: "GET", 
       url: "players.php", 
       data: {} 
      }).done(function(result) { 
       if (result != "Timeout Error") { 
        $("#players").html(result); 
       } 
       $("table").tablesorter({widgets: ["zebra"], sortList: [[1,1], [0,0]]}); 
       timeout_val = window.setTimeout(get_value, 5000); 
      }); 
      tween.reset(); 
      tween.play(); 
     } 
    </script> 

이 스크립트 블록 내 페이지의 머리 안에 있습니다.

다음과 같이 작성된 간단한 입력 버튼으로 get_value 함수를 호출하십시오.

<input type="button" name="submit" id="submit" value="submit" onClick = "get_value();" /> 

난 당신이 나에게

계발을 기쁘게 할 수 있다면이 작동하지 않는 이유에 대한 손실에 나는 당신에게 Crouz 감사

답변

1

tween이 전화에 사용되는 인라인 함수 내에서 정의된다 $(document).ready. 따라서 get_value의 범위에 포함되지 않습니다.

get_value을 동일한 ready 처리기 내부에서 정의한 경우 해당 변수가 표시됩니다. 또는 tweenready 처리기 외부로 이동 했으므로 전역 처리기로 표시하면 해당 처리기가 표시됩니다. 지금과 같이 완전히 분리 된 범위에 있습니다.

+0

@JacobThanks 너무 많이, 왜 내가 이것을 보지 못했는지 모르겠다. 나는 지금 바보 같이 느껴진다. 고마워 친구. – Crouzilles