easyui Cannot read property 'options' of undefined

Posted simonhu1993

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了easyui Cannot read property 'options' of undefined相关的知识,希望对你有一定的参考价值。

使用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的主要内容,如果未能解决你的问题,请参考以下文章

EasyUI:Cannot read property 'width' of null

easyui Datagrid查询报错Uncaught TypeError:Cannot read property 'length' of undefined

EasyUI分页加载datagrid时候报错"Uncaught TypeError: Cannot read property 'length' of undefined&q

TypeError: Cannot read property 'send' of undefined for my commands and a TypeError: Cannot read pro

Cannot read properties of undefined (reading 'length')

× TypeError: Cannot read properties of undefined (reading 'getState')