如何在javascript中更改for循环中的函数名称

时间:2013-03-07 21:49:33

标签: javascript function for-loop

我想将for循环中的函数名更改为类似的东西。

<script>
for (var x=1;x<10;x++){
function name_x(){
   code
}
</script>

因此,使用名称name_1,name_2等生成了10个函数。

由于

编辑:

这就是我需要一个循环来创建5个函数id_1,id_2,id_3,id_4,id_5

<html>
<head>
<script>
function id_1(a){
var id = document.getElementById(a);
if (id.innerHTML==="innerHTML2"){
    id.innerHTML="innerHTML1";
}
else if (id.innerHTML==="innerHTML1"){
    id.innerHTML="innerHTML2";
}
}
</script>
</head>
<body>
<a id="id1" href="javascript:id_1('id')">innerHTML1</a>
<a id="id2" href="javascript:id_2('id')">innerHTML1</a>
<a id="id3" href="javascript:id_3('id')">innerHTML1</a>
<a id="id4" href="javascript:id_4('id')">innerHTML1</a>
<a id="id5" href="javascript:id_5('id')">innerHTML1</a>
</body>
</html>

3 个答案:

答案 0 :(得分:3)

这看起来非常邪恶,但如果您在浏览器中,则可以使用window作为全局对象。否则,定义一些对象以容纳方法:

var obj = {}, x;
for (x = 1; x < 10; x++) {
    obj['name_' + x]() { /* code */ }
}

然后,您可以通过obj.name_1()obj['name_1']()致电。

答案 1 :(得分:3)

您可以改为创建数组函数:

var fs = [];
for (var x = 1; x < 10; x++){
    fs.push( function() {
       /* code */
    });
}
fs[1](); // call second function

您可以使用对象,但我不推荐它。

答案 2 :(得分:1)

由于您的代码应直接应用于您点击的链接,因此您可以使用this传递对该链接的引用。此外,javascript代码需要放在onclick中,而不是href。如果您需要href值才能使其显示为链接,则可以使用#

<a id="id1" href="#" onclick="javascript:swapContents(this);">innerHTML1</a>

然后你可以使用传入的参数作为对元素的引用(使用有意义的函数名称是一个很好的编程习惯,所以我将函数重命名为swapContents):

function swapContents(el){
    if (el.innerHTML === "innerHTML2"){
        el.innerHTML = "innerHTML1";
    } else if (el.innerHTML === "innerHTML1"){
        el.innerHTML = "innerHTML2";
    }
}

此外,根据HTML规范,所有元素都应具有唯一的id值。如果您希望以某种方式对它们进行统一,请为它们指定相同的classname或自定义属性:

<a id="id1" class="id" href="#" onclick="javascript:swapContents(this);">innerHTML1</a>
<a id="id2" class="id" href="#" onclick="javascript:swapContents(this);">innerHTML1</a>
<a id="id3" class="id" href="#" onclick="javascript:swapContents(this);">innerHTML1</a>
<a id="id4" class="id" href="#" onclick="javascript:swapContents(this);">innerHTML1</a>
<a id="id5" class="id" href="#" onclick="javascript:swapContents(this);">innerHTML1</a>

演示:http://jsfiddle.net/V6yG9/