javascript - 未捕获的类型错误 : object is not a function (calling onchange function)

标签 javascript jquery html

我的代码很大,所以我会保持简短。我正在尝试触发 Select 属性的 onchange 事件。问题是,当我触发它时,我收到此错误:

Uncaught TypeError: object is not a function

由于我的代码很大,我将向您展示我在何处声明 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])
            }
        })
    }

这是我触发 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, ...) 和 on*eventName* = function(){} 的工作方式有所不同。

我认为现代库不会使用 on*eventName* 接口(interface),原因很简单:我只能容纳一个监听器。但 on*eventName* 仍然存在以支持旧代码。

现在,在您的特定情况下,当您添加事件时,您的库正在使用 addEventListener/removeEventListener/dispatchEvent 下划线 DOM 接口(interface)。这不会为您的回调设置旧的 on*eventName* 属性,因此您可以直接调用它的唯一方法是使用 DOM 方法dispatchEvent(或您的库包装器)以及类型为“change”的 Event 对象来分派(dispatch)事件。这就是“new Event('change')”的作用。如果您需要向事件传递额外的属性,您可以像这样创建它:

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

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

关于javascript - 未捕获的类型错误 : object is not a function (calling onchange function),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355033/

相关文章:

html - 我可以在仅使用 HTML 和 CSS 的电子邮件模板设计中使用 Accordion 吗

javascript - 注释中的 Vue.js 绑定(bind)

Javascript/Jquery 验证按键/按键时的十进制输入

javascript - 将输入复选框的 DOM 属性更改反射(reflect)到 innerHTML 属性中

Javascript 字符串比较不起作用,搜索了很多?

javascript - 点击用js删除div

html - CSS 过滤器混淆

javascript - 使用 Samsung Smart TV SDK 4.0 处理表单/焦点

javascript - CSS Javascript 在用户点击时显示下一个/上一个 Div 的内容

javascript - 如何使输入组在完成书写后或单击任意位置时折叠?