如何使用javascript更改HTML选择选项项

如何使用javascript更改HTML选择选项项,javascript,jquery,html,asp.net,html-select,Javascript,Jquery,Html,Asp.net,Html Select,我有一个表单,用户将选择城市。当用户选择城市时,城镇列表将更改以将其带到城镇中的城市 我想删除未选定城市的城镇 我有一个代码,但它不起作用: <div class="form-group"> <label for="city">City :</label> <select name="city" id="city" class="form-control" required onchange=

我有一个表单,用户将选择城市。当用户选择城市时,城镇列表将更改以将其带到城镇中的城市

我想删除未选定城市的城镇

我有一个代码,但它不起作用:

       <div class="form-group">
            <label for="city">City :</label>
            <select name="city" id="city" class="form-control" required onchange="townChange()">
                @foreach (var cityItem in Model.cityList)
                {
                    <option value="@cityItem.Id">@cityItem.Name</option>
                }
            </select>
        </div>
        <div class="form-group">
            <label for="town">Town :</label>
            <select name="town" id="town" class="form-control" required>
                @foreach (var townItem in Model.townList)
                {
                    <option value="@townItem.Id" accesskey="@townItem.CityId">@townItem.Name</option>
                }
            </select>
        </div>

function townChange()
{
    var cityId = document.getElementById("city").value;
    var townlist = document.getElementById("town");
    for (var i = 0; i < townlist.length; i++) {
        if (townlist.options[i].accessKey == cityId)
            townlist.remove(i);
    }
}

城市:
@foreach(Model.cityList中的var cityItem)
{
@城市项目名称
}
城镇:
@foreach(Model.townList中的var townItem)
{
@项目名称
}
功能更改()
{
var cityId=document.getElementById(“城市”).value;
var townlist=document.getElementById(“城镇”);
对于(变量i=0;i
您标记了jquery,但实际上并没有在代码中使用jquery

如果您愿意尝试jquery,类似的东西应该可以工作,但我目前无法测试:

$(“#城镇选项”)。每个(功能(){
if($(this).prop('accesskey')!==cityId){
$(this.remove();
}

});用这个替换你的循环

for (var i = 0; i < townlist.length; i++) { if (townlist.options[i].accesskey == cityId) townlist.remove(i); }
for(var i=0;i
document.getElementById(“town”)
您正在循环使用此元素,而此元素本身就是您需要在所选元素的
选项中循环的元素。
试试这个功能

function townChange()
{
    var cityId = document.getElementById("city").value;
    var townlist = document.getElementById("town");
    var options = townlist.options;
    for (var i = 0; i < options.length; i++) {
        if (townlist.options[i].accessKey != cityId)
        {
            townlist.remove(i);
        }
    }
}
函数townChange()
{
var cityId=document.getElementById(“城市”).value;
var townlist=document.getElementById(“城镇”);
var options=townlist.options;
对于(变量i=0;i
您不应该尝试循环townlist变量,因为它只包含town select元素。尝试通过townlist.options进行loopin,但这是删除的示例@Esko此方法的可能重复部分起作用,但不会删除所有需要删除的内容@Riaz@D.Dirik我删除了所有与townlist.accessKey和所选cityId匹配的选项。逻辑正确吗?既然你说“我想删除未选定城市的城镇”?所以我这么做了,我认为逻辑是正确的。逻辑是正确的,但不幸的是它并不完全有效@里亚兹-laskar@D.Dirik好的,你能详细说明一下问题吗