Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获的TypeError:对象不是函数(调用onchange函数)_Javascript_Jquery_Html - Fatal编程技术网

Javascript 未捕获的TypeError:对象不是函数(调用onchange函数)

Javascript 未捕获的TypeError:对象不是函数(调用onchange函数),javascript,jquery,html,Javascript,Jquery,Html,我的代码很大,所以我会保持简短。我想在选择阿曲布他后立即开火。问题是,当我发射它时,我得到了以下错误: Uncaught TypeError: object is not a function 因为我的代码很大,所以我将向您展示我在哪里以及何时触发该事件的代码 以下是声明onchange函数的时间: function e(b, c) { function a() { if (b.current_modal) { b.cu

我的代码很大,所以我会保持简短。我想在选择阿曲布他后立即开火。问题是,当我发射它时,我得到了以下错误:

Uncaught TypeError: object is not a function
因为我的代码很大,所以我将向您展示我在哪里以及何时触发该事件的代码

以下是声明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])
            }
        })
    }
以下是我触发onchange事件的时间:

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

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


    }

我不使用jquery,但在JavaScript中,addEventListener(eventName,…)和*eventName*=function(){}的工作方式有所不同

我想不是现代的库会在*eventName*接口上使用,原因很简单:我只能容纳一个侦听器。但是on*eventName*仍然支持遗留代码

现在,在您的特定情况下,当您添加事件时,您的库正在使用addEventListener/removeEventListener/dispatchEvent underline DOM接口。这不会将遗留的on*eventName*属性设置为回调,因此您可以通过使用DOM方法dispatchEvent(或您的库包装器)和类型为“change”的事件对象调度事件来直接调用它。这就是“新事件(‘更改’)”所做的。如果需要向事件传递额外属性,可以按如下方式创建:

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

并且这些属性将在侦听器回调参数[0]中可用,无论您使用哪个名称设置参数(在您的情况下,将其保留为空)。

@Joe document.getElementById('set-parts').onchange();如果您有jQuery,为什么要使用vanilla DOM?我尝试使用JavaScript触发onchange事件。当我在网站(HTML)上更改select atribute时,OnChange函数起作用,但当我想使用JavaScript强制OnChange事件时,我得到了一个错误@JoeI尝试了@Joe,但没有触发任何事件…尝试调用OnChange如下:document.getElementById('set-parts').dispatchEvent(新事件('change');如果ti有效,我会给你一个完整的答案