1

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

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

因此,生成了名称为 name_1、name_2 等的 10 个函数。

谢谢

编辑:

这就是我需要一个 for 循环来创建 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>
4

3 回答 3

3

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

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

然后您可以通过obj.name_1()或拨打电话obj['name_1']()

于 2013-03-07T21:51:47.360 回答
3

您可以改为创建一个函数数组

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

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

于 2013-03-07T21:53:29.703 回答
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";
    }
}

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

<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/

于 2013-03-07T22:22:39.073 回答