2017-03-24 97 views
0

這是我的代碼:的getElementById變量+號

var num = 1; 
var letter = 'a' + num; 
var aLetter = document.getElementById(letter); 

for (var x = 0; x < 10; x++) { 
    alert(aLetter.innerHTML); 
    num++; 
} 

這段代碼的目的是爲了提醒這些HTML標籤的內容:

<span class="alphStyle" id="a1">a</span> 
<span class="alphStyle" id="a2">b</span> 
<span class="alphStyle" id="a3">c</span> ... 

但它只是提醒第一標籤內容,並沒有更進一步。

這是爲什麼?

+0

你增加在環'num',但'letter'和'aLetter'將仍持有相同的值。您需要將變量放入循環中。 –

回答

0

範圍

您更新num++有沒有影響,因爲它永遠不會被再次使用,它的外面是循環的範圍。

嘗試這樣的事情,而不是:

var num = 1; 
 
for (var x = 0; x < 4; x++) { 
 
    alert(document.getElementById('a' + num).innerHTML); 
 
    num++; 
 
}
<span class="alphStyle" id="a1">a</span> 
 
<span class="alphStyle" id="a2">b</span> 
 
<span class="alphStyle" id="a3">c</span>

甚至

var num = 1; 
 
for (var x = 0; x < 4; x++) { 
 
    alert(document.getElementById('a' + num++).innerHTML); 
 
}
<span class="alphStyle" id="a1">a</span> 
 
<span class="alphStyle" id="a2">b</span> 
 
<span class="alphStyle" id="a3">c</span>

甚至

for (var num = 1; num < 4; num++) { 
 
    alert(document.getElementById('a' + num).innerHTML); 
 
}
<span class="alphStyle" id="a1">a</span> 
 
<span class="alphStyle" id="a2">b</span> 
 
<span class="alphStyle" id="a3">c</span>

甚至

var el; 
 
for (var num = 1; num < 4; num++) { 
 
    el = document.getElementById('a' + num); 
 
    alert(el.innerHTML); 
 
}
<span class="alphStyle" id="a1">a</span> 
 
<span class="alphStyle" id="a2">b</span> 
 
<span class="alphStyle" id="a3">c</span>

我確信你可以在這裏看到的模式。這裏有很多關於邏輯背後的文章,它是一個非常簡單的概念,儘管你的學習資源應該很棒,可以幫助你(或者一般的谷歌搜索)。

https://www.sitepoint.com/demystifying-javascript-variable-scope-hoisting/

總是尋找工作的代碼做任何遠程相似,再問問自己,他們正在做的有什麼不同?

並保持您的搜索一般,這個問題應該被稱爲「循環增量,不工作時調用警報」。然後,當您搜索時,您會發現與此匹配的結果(發佈前)

+0

謝謝,它的工作! –

+0

@bleatinterteiment - 偉大的,包括的例子,以幫助你看到其他的可能性,請記住upvote和接受答案,所以這移動到正確的領域:) –

+0

@bleatinterteiment - 請upvote並接受某人的答案,理想情況下最有價值的答案給你 –

1

您聲明範圍之外的信件。

你需要用遞增的變量x來更新他。

var letter; 
var aLetter; 
for (var x = 0; x < 10; x++) { 
    letter = 'a' + x; 
    aLetter = document.getElementById(letter); 
    alert(aLetter.innerHTML); 
} 
1

你只得到一個元素..更新你的代碼。

var num = 1; 
var letter; 
var aLetter; 

for (var x = 0; x < 10; x++) { 
    letter = 'a' + num; 
    aLetter = document.getElementById(letter); 
    alert(aLetter.innerHTML); 
    num++; 
} 
1

您需要移動:

var letter = 'a' + num; 
var aLetter = document.getElementById(letter); 

在for或它們的價值不會改變^^

var num = 1; 
 

 
for (var x = 0; x < 3; x++) { 
 
    var letter = 'a' + num; 
 
    var aLetter = document.getElementById(letter); 
 
    alert(aLetter.innerHTML); 
 
    num++; 
 
}
<span class="alphStyle" id="a1">a</span> 
 
<span class="alphStyle" id="a2">b</span> 
 
<span class="alphStyle" id="a3">c</span>

1

在程序邏輯有更改爲獲取所有html標籤的警報:

var num = 1; 
var letter = 'a' + num; 
var aLetter = document.getElementById(letter); 

for (var x = 0; x < 10; x++) { 
    alert(aLetter.innerHTML); 
    num++; 
    letter = 'a' + num; 
    aLetter = document.getElementById(letter); 
} 

請確保num不超過HTML標籤的數量,這可以通過'for循環'中的x進行控制。

1

在您的代碼aLetter引用相同的文檔元素。在for循環內執行getElementById指令。此外,num變量是多餘的,因爲for變量x可以做出相同的工作。

for (var x = 1; x < 4; x++) { 
 
    var aLetter = document.getElementById('a' + x); 
 
    alert(aLetter.innerHTML); 
 
}
<span class="alphStyle" id="a1">a</span> 
 
<span class="alphStyle" id="a2">b</span> 
 
<span class="alphStyle" id="a3">c</span>