我的代码中有一部分令我头疼。我错过了什么。我想创建,通过数组声明变量,但它不起作用。当我手动声明它们时(例如am1 = 1; am2 = 2; ...),它工作正常。但问题是当我尝试for循环并以这种方式创建变量时。
我的问题有FIDDLE
myhtml.html
1.Question:<br/>
<textarea name="question11" ></textarea><br/><div id="inner1"></div><button type="button" onClick="addmore1();">Add more</button>
<br/><br/>
2.Question:<br/>
<textarea name="question21" ></textarea><br/><div id="inner2"></div><button type="button" onClick="addmore2();">Add more</button>
myscript.js
var am = [];
for(var i=1; i<3; i++){
am[i] = 1;
}
function addmore1() {
am1++;
n=1;
var textarea = document.createElement("textarea");
textarea.name = "question" + n + am1;
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner"+n).appendChild(div);
}
function addmore2() {
am2++;
n=2;
var textarea = document.createElement("textarea");
textarea.name = "question" + n + am2;
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner"+n).appendChild(div);
}
答案 0 :(得分:3)
以下是fiddle,其中包含针对您的问题的修复程序。
如果您查看开发人员控制台(大多数浏览器中的F12),您可以看到错误:am1和am2未定义。
我想您的意思是引用am[1]
而不是am1
。虽然代码在更改后正在运行,但仍有很大的改进空间:您只需要一个addmore
函数就可以重用更多代码。 e.g:
function addmore(index) {
am[index]++;
var textarea = document.createElement("textarea");
textarea.name = "question" + index + am[index];
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner"+index).appendChild(div);
}
答案 1 :(得分:1)
如果你用数组声明它们,为什么你不按数组使用它们呢?
var am = [];
for(var i=1; i<3; i++){
am[i] = 1;
}
function addmore1() {
am[1]++;
n=1;
var textarea = document.createElement("textarea");
textarea.name = "question" + n + am[1];
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner"+n).appendChild(div);
}
function addmore2() {
am[2]++;
n=2;
var textarea = document.createElement("textarea");
textarea.name = "question" + n + am[2];
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner"+n).appendChild(div);
}
或者我错过了什么?
答案 2 :(得分:-1)
您必须使用.push()
向数组添加值。
var am = [];
for(i=1; i<3; i++){
am.push(1);
}
很抱歉,如果我没有完全回答你的问题。