gpt4 book ai didi

javascript - 动态创建的下拉列表多个附加不起作用

转载 作者:行者123 更新时间:2023-11-30 11:49:10 26 4
gpt4 key购买 nike

我有一个 <select>我动态创建的。当我点击一个按钮时,它应该被添加到 div 的末尾。然而,当我点击多次时,它并没有被多次添加,而我希望它会。

完整代码如下:

<html>
<head>
<title>New Recipe</title>
<script type="text/javascript">
function showfield(name, hiddenId, inputName){
if(name == 'New'){
document.getElementById(hiddenId).innerHTML='New: <input type="text" name="other" />';
}
else {
document.getElementById(hiddenId).innerHTML='';
}
}
</script>
</head>
<body>
<script type="text/javascript">
var selectBox = document.createElement("select");

var option = document.createElement("option");
option.text = "Chocolade: Zwart";
option.value = "1-1";
selectBox.add(option);


var option = document.createElement("option");
option.text = "Zuivel: Boter(80%)";
option.value = "2-2";
selectBox.add(option);


var option = document.createElement("option");
option.text = "Zuivel: Room(40%)";
option.value = "2-3";
selectBox.add(option);


var option = document.createElement("option");
option.text = "Smaakmakers: Koffie-extract";
option.value = "3-4";
selectBox.add(option);



function addNewIngredient(divId){
var amountPart = "Amount(in kg or l): <input type=\"text\"/>";
console.log("clicked");
//document.getElementById(divId).appendChild(selectBox + amountPart + '<br/>');
document.getElementById(divId).appendChild(selectBox);
}
</script>

<form method="post" action="/new/recipe">
category: <select name="category" onchange="showfield(this.options[this.selectedIndex].value, 'newCategory')">
<option value="NONE">Please select ....</option>
<option value="New">New</option>
</select>
<div id="newCategory"></div><br/>
<div id="ingredientList"></div>
<input type="button" onclick="addNewIngredient('ingredientList')" value="Add Ingredient"/>
<input type="submit" value="Submit">
</form>
</body>
</html>

JSFiddle:https://jsfiddle.net/w42m6voj/

PS:HTML是由Bottle(python框架)生成的。我没有对选项中的值进行硬编码,它们是从数据库中获取的。

最佳答案

您只创建了一个选择框实例:

var selectBox = document.createElement("select");

然后你再利用它。所以它被从 DOM 中的旧位置移除并插入到另一个位置。

这是它的工作原理:

function createNewSelectBox() {
var selectBox = document.createElement("select");

var option = document.createElement("option");
option.text = "Chocolade: Zwart";
option.value = "1-1";
selectBox.add(option);


var option = document.createElement("option");
option.text = "Zuivel: Boter(80%)";
option.value = "2-2";
selectBox.add(option);


var option = document.createElement("option");
option.text = "Zuivel: Room(40%)";
option.value = "2-3";
selectBox.add(option);


var option = document.createElement("option");
option.text = "Smaakmakers: Koffie-extract";
option.value = "3-4";
selectBox.add(option);

return selectBox;
}



function addNewIngredient(divId){
var amountPart = "Amount(in kg or l): <input type=\"text\"/>";
console.log("clicked");
//document.getElementById(divId).appendChild(selectBox + amountPart + '<br/>');
document.getElementById(divId).appendChild(createNewSelectBox());
}

关于javascript - 动态创建的下拉列表多个附加不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40001275/

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