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

时间:2014-03-18 23:38:39

标签: javascript html

我的代码中有一部分令我头疼。我错过了什么。我想创建,通过数组声明变量,但它不起作用。当我手动声明它们时(例如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);
} 

3 个答案:

答案 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); }

很抱歉,如果我没有完全回答你的问题。