javascript - 无法使用 javascript 填充 2 个下拉列表

标签 javascript html

我正在尝试使用 JavaScript 填充 2 个下拉列表。第二个最初是空的,将根据第一个的选择来填充。

列表的内容将使用 django 呈现,并且 JavaScript 代码将根据“op”的呈现值来通知是否必须填充第二个下拉列表。

我发现的问题是,一切正常,直到需要填写第二个列表,但这种情况从未发生过。但是,如果我在 html 中对第一个列表进行硬编码,并对其填充的 javascript 部分进行注释,则在第一个列表中选择一个项目后,第二个列表将被完美填充。

在同一次执行中向不同的下拉列表添加两个选项是否有问题?

javascript函数

window.onload = function foo() {    
    var makeslist = document.getElementById('make');
    var modelslist = document.getElementById('model');
    var makestxt = "{{ makestxt }}";
    var makes = makestxt.split("%"); 
    var op = "{{ op }}";                        
    for (i=0; makes.length; i++){ 
        var makesvals = makes[i].split("$"); 
        var option1 = new Option(makesvals[1], makesvals[1], false, false);
        makeslist.options[makeslist.length] = option1; 
    }
    if(op == "1"){
        var modelstxt = "{{ modelstxt }}";
        var models = modelstxt.split("%");
        for (j=0; models.length; j++){ 
        var modelsvals = models[j].split("$"); 
        var option2 = new Option(modelsvals[1], modelsvals[1], false, false);
        modelslist.options[modelslist.length] = option2; 
        }
    }
}

html 表单

<form action="" method="post" accept-charset="utf-8"> 
    <select name="make" onchange="submit()" id="make"> 
        <option>--</option>
    </select> 
    <select name="model" onchange="submit()" id="model"> 
        <option>Choose model</option> 
    </select> 
</form> 

最佳答案

您可以通过以下方式执行此操作:

window.onload = function foo() {    
var makeslist = document.getElementById('make');
var modelslist = document.getElementById('model');
var makestxt = "{{ makestxt }}";
var makes = makestxt.split("%"); 
var op = "{{ op }}";                        
for (i=0; makes.length; i++){ 
       var makesvals = makes[i].split("$"); 

    var option1 = document.createElement("option");
    option1.text = makesvals[1];
    option1.value = makesvals[1];
    makeslist.add(option1, null);
}
if(op == "1"){
    var modelstxt = "{{ modelstxt }}";
    var models = modelstxt.split("%");
    for (j=0; models.length; j++){ 
    var modelsvals = models[j].split("$"); 
    var option2 = document.createElement("option");
    option2.text = modelsvals[1];
    option2.value = modelsvals[1];
    modelslist.add(option2, null);
    }
}

}

关于javascript - 无法使用 javascript 填充 2 个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828173/

相关文章:

javascript - PM2 没有安装最新版本的 nodejs

javascript - 如何在通过socket.io事件设置后更改图像src?

Javascript合并属于对象中不同键的数组值

html - Angular 2 中的验证

html - 始终显示相同的 HTML 页面

javascript - 单击选项卡后立即 float 的 HTML 按钮

javascript - 为什么我的 JS 只有在 HTML 之后才起作用,即使我有 window.onload?

javascript - 哪个与此操作相反?Jquery

html - 如何减小Ionic2中文本输入的大小并在右侧对齐标签

javascript - 选择文件后开始上传,使用 jQuery。