簡體   English   中英

如何在JavaScript中的for循環內更改函數名稱

[英]How do you change a function name inside a for loop in javascript

我想將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>

這看起來很邪惡,但是如果您使用的是瀏覽器,則可以使用window作為全局對象。 否則,定義一些對象來容納方法:

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

然后,您可以通過obj.name_1()obj['name_1']()進行調用。

您可以改為創建函數數組

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

您可以改用一個對象,但我不建議這樣做。

由於您具有應直接應用於您單擊的鏈接的代碼,因此可以使用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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM