我的代码很大,所以我会保持简短。我要点击选择属性的onchange事件。问题是当我开火时我得到了这个错误:
Uncaught TypeError: object is not a function
由于我的代码很大,我会向你展示我在decalare onchange事件中的代码,以及当我触发它时。
这是在声明onchange函数的时候:
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])
}
})
}
这是我开火时的事件:
show_time: function () {
/*.....*/
javascript: document.getElementById("date").innerHTML = ScoreResult;
document.getElementById("set-parts").selectedIndex = 1;
document.getElementById('set-parts').onchange();
}
答案 0 :(得分:1)
我没有使用jquery,但在JavaScript中,addEventListener( eventName ,...)和on * eventName * = function(){}的工作方式有所不同。< / p>
我认为现代库不会在* eventName *接口上使用,原因很简单:我只能拥有一个监听器。但on * eventName *仍然支持遗留代码。
现在,在您的特定情况下,当您添加事件时,您的库正在使用addEventListener / removeEventListener / dispatchEvent下划线DOM接口。这不会将* eventName *属性的遗留问题设置到回调中,因此通过使用DOM方法dispatchEvent(或您的库包装器)使用类型为&#39的Event对象调度事件,可以直接调用它。 ;变更&#39 ;.这就是&#34;新活动(&#39;改变&#39;)&#34;确实。如果您需要将额外的属性传递给事件,您可以像这样创建它:
new Event('change', { foo : 1, bar : 'hello, world!' })
这些属性将在您设置参数的任何名称下的侦听器回调参数[0]中可用(在您的情况下,您将其留空)。