2013-04-29 64 views
0

我是新来的Javascript和我正在上课了解更多。我的作业的一部分是制作一个按钮,点击时会提示您需要多少cookie。然后给你一个总数。每个cookie的价格取决于所购买的cookies数量。功能与用户输入和条件语句

这就是我所拥有的。当我尝试调试器时,我被告知未定义的第25行的其他语句。

所以基本上它循环,然后给出Total:$ NaN并且不停止循环。

任何帮助,将不胜感激。

<script> 
     function buyCookies() 
     { 
      var numCookiesP = document.getElementById("numCookies"); 
      numCookiesP.innerHTML = parseInt (prompt("How many cookies would you like to buy?")); 

      if(numCookies <= 5) 
      { 
       document.write("Total: $" + (numCookies * 1.25)).toFixed(2); 
      } 
      else if(numCookies <= 11) 
      { 
       document.write("Total: $" + (numCookies * 1.15)).toFixed(2); 
      } 
      else 
      { 
       document.write("Total: $" + (numCookies * 1.00)).toFixed(2); 
      } 

     } 

    </script> 
</head> 
<body> 
    <input type="button" value="Cookies" onclick="buyCookies()"> 

    <div> 
     <p id="numCookies"</p> 

    </div> 
+0

您想提示的结果分配到'numCookies'变量,而不是'numCookiesP.innerHTML'? – Bergi 2013-04-29 21:57:19

+0

“*不会停止循环*” - 我的代码中没有看到任何循环? – Bergi 2013-04-29 21:57:51

+0

我的意思是它没有完成加载。不循环。 – 2013-04-29 22:07:47

回答

0

有两个问题:

  • 您不能在已经加载的文档中使用document.write - 调用它将覆盖当前文档。设置innerHTML(或类似的DOM操作)是要走的路。 document.write仅用于在加载文档时将脚本标记或类似内容直接写入html分析器流 - 您从不会真正使用它。
  • 您没有声明并初始化numCookies变量 - 它不包含提示中的解析数字,因此计算结果为NaN

我想你想的:

function buyCookies() { 
    var numCookiesP = document.getElementById("numCookies"); 
    var numCookies = parseInt(prompt("How many cookies would you like to buy?"), 10); 
    var factor = 1.0; 
    if (numCookies <= 5) { 
     factor = 1.25; 
    } else if (numCookies <= 11) { 
     factor = 1.15; 
    } 
    numCookiesP.innerHTML = "Total: $" + (numCookies * factor).toFixed(2); 
} 
+0

谢谢!这工作出色。我们正处于我们应该忘记doc.write并转向DOM操作的地步。但这是第一个需要它的任务。所以我遇到了一些麻烦。 – 2013-04-29 22:41:12

0

有可能你会想调整一些其他的东西,但下面应该至少明确了$楠:

<script> 
     function buyCookies() 
     { 
      var numCookies = parseInt (prompt("How many cookies would you like to buy?")); 
      var numCookiesP = document.getElementById("numCookies").innerHTML; 

      if(numCookies <= 5) 
      { 
       document.write("Total: $" + (numCookies * 1.25).toFixed(2)); 
      } 
      else if(numCookies <= 11) 
      { 
       document.write("Total: $" + (numCookies * 1.15).toFixed(2)); 
      } 
      else 
      { 
       document.write("Total: $" + (numCookies * 1.00).toFixed(2)); 
      } 

     } 

    </script> 
</head> 
<body> 
    <input type="button" value="Cookies" onclick="buyCookies()"> 

    <div> 
     <p id="numCookies"></p> 

    </div> 
+0

修正了它,它仍然给我总计:$ NaN并保持循环。 – 2013-04-29 22:05:01

+0

还有一些其他问题,但上面应该可以。 – 2013-04-29 22:08:11