2014-06-22 3 views
0

코드가 너무 커서 짧을 것입니다. 나는 Select atribute의 onchange 이벤트를 시작하려고 애를 쓰고있다. 내 코드는 내가 onchange를 이벤트를 decalare 내가 그것을 불 때 코드로 표시됩니다 큰 때문에잡히지 않은 TypeError : 객체가 함수가 아닙니다 (onchange 함수 호출 중)

Uncaught TypeError: object is not a function 

: 문제는 내가 그것을 불 때이 오류를 가지고 있다는 것입니다.

function e(b, c) { 
     function a() { 
      if (b.current_modal) { 
       b.current_modal.className = "hide" 
      } 
      f("overlay").className = "hide" 
     } 
     jigsaw.UI.close_lightbox = a; 
     Util.$("overlay").click(a); 
     Util.$("set-parts").change(function() { 
      if (this.parts != 9) { 
       jsaw.set_image("images/puzzle.jpeg") 
      } else { 
       jsaw.set_image("images/puzzle1.jpeg") 
      } 
      c.emit(jigsaw.Events.PARTS_NUMBER_CHANGED, +this.value); 
      c.emit(jigsaw.Events.RENDER_REQUEST) 
     }); 
     Util.$("game-options").click("a", function (h) { 
      if (jigsaw.Events[this.id]) { 
       h.preventDefault(); 
       c.emit(jigsaw.Events[this.id]) 
      } 
     }) 
    } 

여기에 내가 onchange를 이벤트 발사 때입니다 : 여기

은 onchange를 함수를 선언 할 때입니다

show_time: function() { 
      /*.....*/ 

     javascript: document.getElementById("date").innerHTML = ScoreResult; 
     document.getElementById("set-parts").selectedIndex = 1; 
     document.getElementById('set-parts').onchange(); 


    } 
+0

@Joe document.getElementById ('set-parts'). onchange(); – user2496520

+0

jQuery를 사용하는 경우 왜 vanilla DOM을 사용하고 있습니까? – Scimonster

+0

자바 스크립트를 사용하여 onchange 이벤트를 발생 시키려고합니다. OnChange 함수는 웹 사이트 (HTML)에서 select atribute를 변경할 때 작동하지만 JavaScript를 사용하여 onchange 이벤트를 강제 실행하려는 경우이 오류가 발생합니다. @Joe – user2496520

답변

1

내가 jQuery를 사용하지 않는,하지만 자바 스크립트의 차이에있다 addEventListener (eventName, ...) 및 on * eventName * = function() {}의 작동 방식은 다음과 같습니다.

단순한 이유 때문에 현대 라이브러리가 * eventName * 인터페이스를 사용하지 않는다고 가정합니다. 하나의 리스너 만 가질 수 있습니다. 그러나 on * eventName *은 여전히 ​​레거시 코드를 지원합니다.

이제 특수한 경우에 라이브러리에서 addEventListener/removeEventListener/dispatchEvent DOM 인터페이스에 밑줄을 사용하여 이벤트를 추가 할 수 있습니다. 이것은 callback에 대한 * eventName * 속성에 대한 레거시를 설정하지 않으므로 'change'유형의 Event 객체로 DOM 메소드 dispatchEvent (또는 라이브러리 래퍼)로 이벤트를 전달하여 직접 호출 할 수있는 유일한 방법입니다. . 이것이 바로 "새로운 사건 ('변화')이하는 것입니다. 당신이 이벤트에 추가 속성을 통과해야하는 경우이처럼 만들 수 있습니다 귀하의 경우 (

new Event('change', { foo : 1, bar : 'hello, world!' }) 

그 속성 리스너 콜백 인수 [0] 당신이 당신의 인수를 설정 중 이름에 사용할 수 있습니다, 당신은 그것을 비워 뒀습니다).

관련 문제