2013-11-01 75 views
0

我需要這個來接受用戶輸入。取該值並減去一個,以便可以調用和打印5個數組中的一個。如果選擇5,則打印所有5個陣列;如果選擇3,則會打印數組0到2。需要幫助innerHTML和數組輸入變量

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Test2</title> 
</head> 
<body> 
<input type="button" onclick="dutyarray()" value="Click">To see my top<input type="number"  id="counter"> job duties here</input> 
<br /> 
<p id="task">Duties</p> 
<script> 
function dutyarray() 
{ 
    var x = document.getElementById('counter').value; 
    x = parseInt(x); 

    var duty= new Array(); 
    duty[0] = "Operate Equipment"; 
    duty[1] = "Check for Water Damage"; 
    duty[2] = "Check for Mold"; 
    duty[3] = "Follow Insurance Procedure"; 
    duty[4] = "Restore";   

    while(x >= 0; x - 1) 
    { 
     document.getElementById('task').innerHTML = duty[x] + <br>; 
    } 
} 
</script> 
+0

邊界檢查...確保'x'大於0這樣做循環之前!哦,並使用'x - '... – abiessu

+0

'while(x> = 0; x - 1)'不是可以做的事情。請查閱「JavaScript數組文字」。 '
'可能需要在一個字符串中。爲了追加,你可以使用'+ =',但是DOM是一個更好的解決方案。 – Ryan

+0

你有這麼多的錯誤... 1。在你的例子中只寫最小的代碼。 2.'input'標籤沒有innerHTML屬性,它是一個開放的標籤。 3.閱讀其他評論。 –

回答

2

你可以使用

var duty = [ 
     "Operate Equipment", 
     "Check for Water Damage", 
     "Check for Mold", 
     "Follow Insurance Procedure", 
     "Restore" 
    ], 
    x = parseInt(document.getElementById('counter').value, 10); 
document.getElementById('task').innerHTML = duty.slice(0, x).join('<br />'); 

注意

  • 使用parseIntparseFloat時,必須使用第二個參數(基數)。

  • 如果document.getElementById('counter').value是數字串(如'3'),請不要使用parseInt。相反,如有必要,請使用+'3'獲取號碼3

    只有使用parseInt如果你想解析'3px'3

  • 不要在每次迭代循環時使用getElementById來獲取相同的元素。

    然後,而不是

    for(var i = 0; i < n; ++i) { 
        doSomething(document.getElementById('foo'), i); 
    } 
    

    使用

    var el = document.getElementById('foo'); 
    for(var i = 0; i < n; ++i) { 
        doSomething(el, i); 
    } 
    
  • 從來沒有在循環的每次迭代改變innerHTML,因爲修改DOM有糟糕的表現。

    然後,而不是

    for(var i = 0; i < n; ++i) { 
        element.innerHTML += someHTML(i); // n DOM modifications 
    } 
    

    使用

    var html = ''; 
    for(var i = 0; i < n; ++i) { 
        html += someHTML(i); 
    } 
    element.innerHTML = html; // only 1 DOM modification 
    
+0

優秀的代碼。 – Tony

0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Test2</title> 
</head> 
<body> 
    <input type="button" onclick="dutyarray()" value="Click">To see my top 
    <input type="number" id="counter"> job duties here</input> 
    <br /> 
    <p id="task">Duties</p> 
    <script> 
     function dutyarray() { 
      var x = document.getElementById('counter').value; 
      x = parseInt(x); 

      var duty = 
       [ 
       "Operate Equipment", 
       "Check for Water Damage", 
       "Check for Mold", 
       "Follow Insurance Procedure", 
       "Restore" 
       ]; 

      if (x > duty.length-1) x = duty.length-1; // Performs some checking 

      document.getElementById('task').innerHTML = ""; 
      for (; x >= 0; x--) { 
       document.getElementById('task').innerHTML += duty[x] + "<br>"; 
      } 
     } 
    </script> 
</body> 
</html> 
+0

在這裏接近我正在尋找的很多好的建議請讓他們來。 – Thps2