码迷,mamicode.com
首页 > 其他好文 > 详细

easyui Cannot read property 'options' of undefined

时间:2020-05-14 15:15:32      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:mep   close   pre   length   edit   http   初始   head   UNC   

使用easyui窗口:以下是父页面

<html>
<head>
    <title>定时调度管理</title>
</head>
<body width="100%" height="100%">
<table id="ListTable" title="定时调度管理" style="width: 100%;height: 100%"></table>
<div id="homepicAddWin"></div>
</body>
<script>

这里在原窗口打开

function edit(id){
        var $win;
        $win = $(‘#homepicAddWin‘).window({
            title:‘调度任务‘,
            href:"/api/jobs/jobForm?id="+id,
            width: 450,
            height: 300,
            shadow: true,
            modal: true,
            iconCls: ‘icon-edit‘,
            closed: true,
            minimizable: false,
            maximizable: false,
            collapsible: false
        });
        $win.window(‘open‘);
    }

技术图片

 注意,有些人会发现在窗口菜单中会出现无法使用js函数,这是因为父窗口在引用中的是子页面中<body></body>

之间的内容,如果script脚本写在body外将无法使用;子页面中我有一个selec标签用来回显定时脚本状态

<tr>
                <div>
                    <td><label for="isPause">状态:</label></td>
                    <td>
                        <select id="isPause" name="isPause" style="width: 80px" class="easyui-combobox"
                                data-options="required:true" value="${result.isPause}">
                            <option value="true">已暂停</option>
                            <option value="false">运行中</option>
                        </select>
                    </td>
                </div>
            </tr>

直接使用

$(function () {
  $("#isPause").combobox(‘setValue‘,‘${result.isPause}‘);
}

这个会报错:jquery.easyui.min.js:12418 Uncaught TypeError: Cannot read property ‘options‘ of undefined

意思是找不到options参数。这是因为easyui会动态改变页面dom结构,也就是说会在页面加载后,easyui会自己在页面生成combobox。

这个时候问题就来了。

因为jquery的$(function(){})方法也是在页面加载后就执行的,这句语句的执行顺序会在easyui生成combobox之前,这个时候页面还没有对应的combobox,所以会报错。

那么如果还是要这个操作,就在页面加载时设置一个定时器,判断easyui的控件是否已经完成了初始化。当已完成初始化时,才能使用控件。这样就通过性能,来换取系统的稳定执行。

参考:https://blog.csdn.net/easonjake/article/details/90671010

修改:

$(function () {
        var interval = window.setInterval(function () {
            //等待页面加载完毕
            if($("#isPause").combobox().length > 0){
                $("#isPause").combobox(‘setValue‘,‘${result.isPause}‘);
                window.clearInterval(interval);
            }
        },100)
    })

等待页面加载完之后,再给select赋值。

 

easyui Cannot read property 'options' of undefined

标签:mep   close   pre   length   edit   http   初始   head   UNC   

原文地址:https://www.cnblogs.com/SimonHu1993/p/12888471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!