两个结构相似函数调用异常:点击第二个按钮提示'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
相关产品推荐
相关产品推荐

