gpt4 book ai didi

jquery - JavaScript 运行时错误 : Unable to get property 'forEach' of undefined or null reference

转载 作者:行者123 更新时间:2023-12-03 23:04:27 25 4
gpt4 key购买 nike

我有一个 aspx 母版页应用程序,其中子 aspx 页面的 asp:content 部分中有两个下拉列表控件。其中一个控件是从 SQL 数据库填充的。另一个是根据从第一个下拉列表中选择的项目填充的。我正在尝试使用this solution在我的代码中,但是我收到错误:

JavaScript runtime error: Unable to get property 'forEach' of undefined or null reference

如何根据所选州显示城市名称?
我的代码块是:

  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

<script type="text/javascript">
AL = new Array('Birmingham', 'Montgomery', 'Tuscaloosa');
FL = new Array('Miami', 'FtLauderdale', 'Jacksonville');
GA = new Array('Atlanta', 'Macon', 'Athens');

populateSelect();

$(function () {

$('#ddlState').change(function () {
populateSelect();
});

});

function populateSelect() {
category = $('#ddlState').val();
$('#ddlCity').html('');

eval(category).forEach(function (t) {
$('#ddlCity').append('<option>' + t + '</option>');
});
}
</script>

<asp:DropDownList ID="ddlCity" runat="server" CssClass="stdFldWidth" onchange="setFDFlag()">
</asp:DropDownList>

<asp:DropDownList ID="ddlState" runat="server" CssClass="stdFldWidth" DataSourceID="dsUSState"
DataTextField="US_State" DataValueField="State_ID" AutoPostBack="true" >
</asp:DropDownList>

更新:

Protected Sub ddlState_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ddlType.SelectedIndexChanged
If ddlState.SelectedValue = "FL" Then
DisplayRegulation(FL)
End If

最佳答案

ASP.NET 页面的常见问题,特别是在您使用 MasterPages 时。

生成的页面的元素ID将发生更改。

解决您的问题的一个解决方案是为这些元素提供一个唯一的class,并在选择器中使用它而不是它们的ID:

<asp:DropDownList ID="ddlCity" runat="server" CssClass="stdFldWidth ddlCity" onchange="setFDFlag()">
</asp:DropDownList>

<asp:DropDownList ID="ddlState" runat="server" CssClass="stdFldWidth ddlState" DataSourceID="dsUSState"
DataTextField="US_State" DataValueField="State_ID" AutoPostBack="true" >
</asp:DropDownList>

...

$(function () {
var states = {
AL: ['Birmingham', 'Montgomery', 'Tuscaloosa'],
FL: ['Miami', 'FtLauderdale', 'Jacksonville'],
GA: ['Atlanta', 'Macon', 'Athens']
};

function populateSelect() {
$('.ddlCity').empty();

var stateSelected = $('.ddlState').val();

if (stateSelected) {
states[stateSelected].forEach(function (sel) {
$('<option>').val(sel).text(sel).appendTo($('.ddlCity'));
});
}
}

populateSelect();

$('.ddlState').on('change', function() {
populateSelect();

return true;
});
});

编辑,使用 @sebnukem 建议将数据保存在对象中,这样您就可以摆脱eval()

更新,将整个代码放入 jQuery 文档就绪事件处理程序中。

已更新,方法是在 DropDownListjQuery onchange 事件处理程序中返回 true,以继续进行 PostBack.

Demo

关于jquery - JavaScript 运行时错误 : Unable to get property 'forEach' of undefined or null reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com