5
我试图添加和删除下拉菜单<select>
s到按钮单击窗体上。这是我目前的代码。我可以发誓我昨晚做了这个工作,但是当我今天早上去我的项目上工作一些时,下拉不会正确添加/删除。JavaScript函数生成下拉菜单/删除下拉菜单
function DropDowns(){
this.counter = 0;
this.addDropdown = function (divname) {
var newDiv = document.createElement('div');
var html = '<select name="cookie' + this.counter + '">', i;
for (i = 0; i < cookies_drop.length; i++) {
html += "<option value='" + cookies_drop[i] + "'>" + cookies_drop[i] + "</option>"
}
html += '</select>';
newDiv.innerHTML = html;
document.getElementById(divname).appendChild(newDiv);
this.counter++;
}
this.remDropdown = function() {
$('#dropdowns-container').find('div:last').remove();
this.counter--;
}
}
var dropsTest = new DropDowns();
HTML:
<form action='' method=post id="dropdowns-container">
<button id="add_cookie" type="button" onclick="dropsTest.addDropdown('dropdowns-container');">add cookie</button>
<button id="rem_cookie" type="button" onclick="dropsTest.remDropdown();">remove cookie</button>
<input name="cookies" type=submit value="submit">
</form>
什么'cookies_drop'? – Mikey
“正确”是什么意思?你看到什么行为?什么是“cookies_drop”?你正在递增“counter”,但你定义了“this.counter”。此外,dropTest应该是未定义的,因为你没有做“var dropTest = new DropDowns();” 事实上,这可能是你搞砸了,但你的计数器逻辑将失败,因为缺少“这个”的 –
对不起,我会澄清问题。 cookies_drop是一个数组。它是在php页面声明的,使用json_encode将php数组“转换”为cookies_drop。 cookies_drop数组当前正确填充。我看到的行为是,当我点击“添加cookie”按钮时,没有新的下拉列表被添加到表单中。感谢您指出“this.counter”问题,我将更新我的代码并查看它是如何发生的。 – Csw