gpt4 book ai didi

javascript - 过滤多个选项的数组以返回新选择中的选项

转载 作者:行者123 更新时间:2023-11-28 00:46:04 24 4
gpt4 key购买 nike

我支持一些遗留代码,但在实现新功能时遇到一些问题。

我有 2 个多重选择选项,第一个显示州列表,第二个显示城市列表。这个想法是,城市列表将根据第一次选择中选择的州进行过滤。

目前,城市包含在 JavaScript 数组中,该数组在 if 语句中使用,将相关选项附加到选择,但是这只适用于单个州选择。

如何过滤多个州选择中的城市?

我尝试了很多 if 语句组合,但没有成功。我的 jquery 知识显然缺乏,并且在 google/stackoverflow 中没有找到任何类似的东西 - 但我很高兴我可能从错误的 Angular 来处理这个问题。

<form name="newform">
<select multiple size="10" name="getStateSelect" id="getStateSelectID" onchange="GetSeries(document.newform.getStateSelect.options [document.newform.getStateSelect.selectedIndex].value);">
<option value="1">Alaska</option>
<option value="2">Arizona</option>
<option value="3">Californa</option>
</select>
<br />
<br />
<select id="getCitySelect" multiple="multiple" size="10"></select>
</form>


var fsArray = [{id: 1,stateid: 1,cityname: "Anchorage"},
{id: 2,stateid: 1,cityname: "Fairbanks"},
{id: 3,stateid: 1,cityname: "Wasilla"},
{id: 4,stateid: 2,cityname: "Flagstaff"},
{id: 5,stateid: 2,cityname: "Phoenix"},
{id: 6,stateid: 2,cityname: "Tucson"},
{id: 7,stateid: 3,cityname: "Fremont"},
{id: 8,stateid: 3,cityname: "Lakeport"},
{id: 9,stateid: 3,cityname: "Los Angeles"}];

function GetSeries(i) {
var SeriesSelectBox = document.getElementById("getCitySelect");
SeriesSelectBox.options.length = 0;

for (j in fsArray) {
if (fsArray[j].stateid == i) {
var seriesLength = SeriesSelectBox.options.length;
SeriesSelectBox.options[seriesLength] = new Option(fsArray[j].cityname, fsArray[j].id);
}
}
}

http://jsfiddle.net/fcp3h7mw/1/

非常感谢任何帮助!谢谢

最佳答案

我刚刚在 getStateSelectID 值上添加了一个 for 循环,以检查每个元素是否处于选择状态,如果选择,它将运行循环来添加城市。

fiddle :http://jsfiddle.net/fcp3h7mw/5/

JavaScript:

var fsArray = [
{id:1,stateid:1,cityname:"Anchorage"},
{id:2,stateid:1,cityname:"Fairbanks"},
{id:3,stateid:1,cityname:"Wasilla"},
{id:4,stateid:2,cityname:"Flagstaff"},
{id:5,stateid:2,cityname:"Phoenix"},
{id:6,stateid:2,cityname:"Tucson"},
{id:7,stateid:3,cityname:"Fremont"},
{id:8,stateid:3,cityname:"Lakeport"},
{id:9,stateid:3,cityname:"Los Angeles"}
];

function GetSeries(i) {
var id = document.getElementById("getStateSelectID");
var SeriesSelectBox = document.getElementById("getCitySelect");
SeriesSelectBox.options.length = 0;
var states = 0;

for (states=0; states < id.length; states++) {
if(id[states].selected){
for (j in fsArray) {
if (fsArray[j].stateid == id[states].value) {
var seriesLength = SeriesSelectBox.options.length;
SeriesSelectBox.options[seriesLength] = new Option(fsArray[j].cityname, fsArray[j].id);
}
}
}
}
}

标记:我还在标记中取出了很多你的函数调用

<select multiple size="10" name="getStateSelect" id="getStateSelectID" onchange="GetSeries();">

关于javascript - 过滤多个选项的数组以返回新选择中的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364838/

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