我一直在研究代码来计算运费。我让代码在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>
答案 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)
这是错的:
不要在所有错误的地方使用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代码放入调试器中。