2013-11-01 28 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