[英]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
值。 如果希望它們以某種方式統一,請給它們提供相同的class
或name
,或自定義的屬性:
<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.