Javascript代码验证但不输出

时间:2014-01-15 20:41:16

标签: javascript

我一直在研究代码来计算运费。我让代码在HTML中工作,但意识到它需要在XHTML 1.0 Strict中。知道它有效,我开始研究验证错误。我现在没有错误,但代码停止输出总成本。我在哪里错了?

更新代码

 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title> "Calculate Shipping" </title>
<script type="text/javascript">
  // <![CDATA[
function calculateShipping() }
    var price = parseFloat(document.getElementById('price').value);
    //This will add $1.50 to any purchases that are less than or equal
to $25.00.
    if (price <= 25){
        price = (price) + 1.5;
    } else {
        //return price * 10 / 100
        var percentToAdd=(price) * .1;
        price=(price)+(percentToAdd);
    }

    document.getElementById('result').innerHTML='Total Order Cost:
'+price; 

// ]]>
</script>
</head>

<body>
<h1>Enter Purchase Price</h1>

<form action="#">
<div id="result">
<input type="text" name="price" id="price" />
<input type="button" value="Submit" onclick=calculateShipping(); return
false;" />
</div>
</form>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

浏览器可能正在尝试将这些CDATA声明评估为Javascript(请记住,大多数浏览器都会将XHTML解析为HTML)。尝试将它们放在Javascript注释中。

<script type="text/javascript">
  // <![CDATA[
  // ]]> 
</script>

另一种可能性是将Javascript放在单独的文件中,而不是尝试将其嵌入到文档中

 <script type="text/javascript" src="shipping.js"></script>

最后,您可能想看看这个类似的问题:When is a CDATA section necessary within a script tag?

答案 1 :(得分:1)

您错过了最终结束}

还可以在CDATA语句中使用注释或删除它们(如missingno sez)。

答案 2 :(得分:1)

这是错的:

  • 你错过了关闭你的功能;
  • 您正在对字符串执行低于操作。这只是一个非常糟糕的习惯。
  • 您的CDATA代码可能会被解释为JavaScript。

不要在所有错误的地方使用parseFloat,只需将parseFloat放在变量定义周围:

var price = parseFloat(document.getElementById('price').value);

另外,请确保关闭括号。在这种情况下,只需将}放在最后一行,您的函数就会正确关闭

最后,你应该在每个CDATA部分之前加上一个双斜杠。就像missingno说:

<script type="text/javascript">
  // <![CDATA[
  // ]]> 
</script>

使用单行评论进行评论。

PS:尝试使用HTML5,使用此doctype:

<!DOCTYPE html>

此外,您应该确保所有报价都已关闭。如果您通过调试器运行它并且它没有给您任何错误,那么您应该真正使用更好的调试器。我已修复你的代码并把它放在一个jsbin中,你可以看到它here。下次尝试将代码放入其中。我相信它会给你所有的错误。

PS:你可能没有收到错误,因为你的“js错误调试器”只检查.js文件,你已经使你的脚本成为内联脚本。尝试下次将JS代码放入调试器中。