2013-10-23 60 views
0

我有一個For循環的函數,它將從0開始計數到n的值,但是當達到5的倍數時將包括一個字符串而不是整數7.問題是它只顯示1個輸出,我希望它列出在每次迭代中追加輸出。 (1
,2
,3
,4
等)。JS For條件迴路

HTML:

<button onclick="callit()">Call OneTwo</button> 
<div id="OneTwo">Test</div> 

JS:

  function callit() { 
       x = 0; 
       n = 100; 
       z = "The number is " + x + "<br>"; 
       one = "One"; 
       two = "Two"; 
       ot = one + " " + two; 
       obj = document.getElementById('OneTwo'); 

       for (x; x <= n; x++) { 
        if ((x % 5) === 0) { 
         z = one; 
        } 
        if ((x % 7) === 0) { 
         z = two; 
        } 
        if (((x % 3) === 0) && ((x % 5) === 0)) { 
         z = ot; 
        } 
        obj.innerHTML = z; 
       } 
      } 

回答

2

在這裏你去,這應該做你在找什麼:

obj.innerHTML = obj.innerHTML + "<br />" + z; 

需要維護的innerHTML的值,而不是替換它。

+0

當然!謝謝。 – Kald

1

那麼你將與當前值替換的div的整個HTML。你需要追加它。嘗試以下操作:

obj.innerHTML = obj.innerHTML + '<br/>' + z; 

jsfiddle

+0

我希望,這不會解決他的問題......你可以給這個評論。 – Hariharan

+0

是的,我知道它取代了HTML,而不是附加迭代,但它仍然不適用於此。 – Kald

+1

需要在'obj.innerHTML'和''
'之間加'+' –

0

您需要獲取以前的值並附加新的值。你只是附加在現有的問題上,這會造成問題。

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function callit() { 
       x = 0; 
       n = 100; 
       z = "The number is " + x + "<br>"; 
       one = "One"; 
       two = "Two"; 
       ot = one + " " + two; 
       obj = document.getElementById('OneTwo'); 

       for (x; x <= n; x++) { 
        if ((x % 5) === 0) { 
         z = one; 
        } 
        if ((x % 7) === 0) { 
         z = two; 
        } 
        if (((x % 3) === 0) && ((x % 5) === 0)) { 
         z = ot; 
        } 
        obj.innerHTML = obj.innerHTML + "<br />" + z; 
       } 
      } 
</script> 
</head> 
<body> 

<button onclick="callit()">Call OneTwo</button> 
<div id="OneTwo">Test</div> 

</body> 
</html> 
+0

認真嗎?只是一個代碼塊與零解釋。 – jfriend00

+0

只要發佈每次迭代,這樣做都有幫助,現在輸出不會給出所需的數字,但我只是爲每個條件添加了其他行。 – Kald

+0

這就是偉大的@卡爾德 – Hariharan