繁体   English   中英

通过数组和for循环声明JScript变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM