You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两个结构相似函数调用异常:点击第二个按钮提示'demo1未定义'

问题解决:demo1 is not defined错误

问题根源在于第二个自执行函数(IIFE)里的demo1只是局部变量,没有暴露到全局作用域。第一个demo之所以能正常调用,是因为它被赋值给了window.demo,成为了全局对象的属性,而demo1只存在于第二个IIFE的局部作用域中,外部(比如按钮的onclick事件)无法访问到它。

只需要修改第二个IIFE里的demo1定义,把它挂载到window对象上即可:

; (function ($, undefined) {
    var grid1;
    // 将demo1挂载到window全局对象
    var demo1 = window.demo1 = {};
   
    Sys.Application.add_load(function () {
        grid1 = $telerik.findControl(document, "RadGrid1");

    });

    demo1.ShowColumnHeaderMenu = function (event, columnName) {

        var columns = grid1.get_masterTableView().get_columns();

        for (var i = 0; i < columns.length; i++) {
            if (columns[i].get_uniqueName() == columnName) {
                columns[i].showHeaderMenu(event, 75, 20);
            }
        }
    };
})($telerik.$);

修改后,demo1就成为了全局可访问的对象,第二个按钮的onclick调用demo1.ShowColumnHeaderMenu就能正常执行了,按钮代码无需修改。

内容的提问来源于stack exchange,提问作者jezz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:45:25