[英]Declare JScript variables by array and for loop
我的代码的某些部分让我头疼。 我错过了什么。 我想创建并通过数组声明变量,但是它不起作用。 当我手动声明它们(例如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);
}
这是解决您的问题的小提琴 。
如果查看开发人员控制台(在大多数浏览器中为F12),则会看到错误:am1和am2未定义。
我想您打算做的是引用am[1]
而不是am1
。 尽管代码在更改后仍然有效,但是仍有很多改进的余地:您可以仅拥有一个addmore
函数就可以重用更多代码,等等。 例如:
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);
}
如果按数组声明它们,为什么不按数组使用它们呢?
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);
}
还是我错过了什么?
您必须使用.push()
将值添加到数组。
var am = []; for(i=1; i<3; i++){ am.push(1); }
抱歉,如果我没有完全回答您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.