函数只被处理一次,然后浏览器给出错误“函数未定义”

functions are processed only once and then browser give error "function is not defined"

本文关键字:函数 出错 浏览器 错误 函数未定义 未定义 然后 处理 一次      更新时间:2023-09-26

我的功能。当用户在select:

中更改项时,我得到选中的索引
$(function itemchange() {
     var index = document.getElementById('columnList').selectedIndex;
     if (index != -1) {
         alert(index);
     }
 });

我的html标签我在面板中选择项目。这个面板放置在模态窗口:

<asp:Panel ID="ModalPanel" runat="server" Width="700px" Height="500px" BackColor="GhostWhite">
    <div>
    <br />
    <div style="float:left;">
        <select size="4" id="columnList" onchange="itemchange" style="height:200px;">
            <option value="Code">Code</option>
            <option value="Name">Name</option>
            <option value="P">P</option>
            <option value="Desc">Desc</option>
            <option value="Object">Object</option>
            <option value="User name">User name</option>
            <option value="Num">Num"</option>
            <option value="Commant">Commant</option>
            <option value="Prod">Prod</option>
            <option value="Test">Test</option>
        </select>
    </div>
    <div style="clear:left;">
     <asp:Button ID="OKButton" runat="server" Text="Close" />
    </div>
    </div>
</asp:Panel>

你不应该这样做:

$(function itemchange() {
    var index = document.getElementById('columnList').selectedIndex;
    if (index != -1) {
        alert(index);
    }
});

因为现在函数的作用域不在窗口对象中。你应该这样做:

$(function(){
    itemchange();
});
function itemchange() {
    var index = document.getElementById('columnList').selectedIndex;
    if (index != -1) {
        alert(index);
    }
}

然后函数的作用域更改为窗口对象,然后在运行itemchange()时执行。它也会在DOM加载时运行(我相信你想要的)。