2012-01-02 116 views
2

我是一名Javascript初学者,无法获取下面的代码来工作。当我点击按钮时,没有任何反应。有人能指出我做错了什么吗?谢谢!无法获得JavaScript函数执行

<html> 
<head> 
<title>Sarah's Puppy Game</title> 
</head> 
<body> 
    <div id="input"> 
     <input id="puppyNumber" size=30> 
     <button onClick="doLoop()"> Get your puppies </button> 
    </div> 
    <script type="text/html"> 
     function doLoop() { 
     var number = document.getElementById('puppyNumber').value; 
      var puppy = []; 
      while (var i = 0; i < parseInt(number); i++) { 
       puppy = puppy.push('puppy<br>'); 
      } 
      alert(puppy); 


     } 
    </script> 
</body> 
</html> 
+0

你期望发生的? – 2012-01-02 03:23:02

+0

一个警告框弹出与单词小狗打印的次数我进入输入 – user1086348 2012-01-02 03:24:37

+0

你可以尝试什么时候“什么都没有发生”的事情:1)检查你的浏览器的JavaScript错误日志2)添加'alert'语句以获得一瞥发生了什么事情。 – 2012-01-02 03:31:09

回答

1

而不是...

puppy = puppy.push('puppy<br>'); 

...只想说...

puppy.push('puppy<br>'); 

push返回已推元素,而不是数组,它被推倒。

您的代码将导致变量puppy被设置为字符串"puppy<br>"。然后你会尝试做"puppy<br>".push("puppy<br>"),这显然是无效的。

+0

代码还有几个问题:-) – 2012-01-02 03:28:42

+0

迈克尔的答案在这里是更完整的答案,我已经标记为这样。 – 2012-01-02 03:29:41

+0

你们真棒,非常感谢!有没有理由在javascript中使用for而不是while循环? – user1086348 2012-01-02 03:33:59

5

我看到的三个问题。

  1. 首先,使用text/javascript<script type='text/javascript'>

  2. 其次,在循环改变whilefor。 A while循环用于测试条件,但您已设置计数器。

  3. 第三,不要将puppypush()方法分配。 .push()直接作用于阵列。

Here's the corrected version in action.

<!-- type="text/javascript" not "text/html" --> 
<script type="text/javascript"> 
    function doLoop() { 
    var number = document.getElementById('puppyNumber').value; 
     var puppy = []; 

     // This is a for loop, rather than a while loop 
     // Also for good measure, use the second param to parseInt() for a 
     // decimal radix to avoid getting binary or octal numbers accidentally. 
     for (var i = 0; i < parseInt(number, 10); i++) { 
      // Don't assign the result back to puppy 
      puppy.push('puppy<br>'); 
     } 
     alert(puppy); 


    } 
</script>