我正在我的初学者Javascript类中进行一项任务,该任务涉及var total下面第一行的元素document.getElementById。有一个错误“;”但是分号就在那里。所以我知道它一定是别的东西。这是代码。有什么建议吗?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Price Calculator</title>
<script type="text/javascript">
function fixOrder(){
const TAX = 0.975;
var numPrice = parseFloat(document.getElementById("cost").value);
var subtotal = numPrice * TAX;
var total = subtotal + tax;
document.getElementById("cost").value = "$" cost.ToFixed(2);
document.getElementById("tax").value ="$" tax.ToFixed(2);
document.getElementById("total").value ="$" total.ToFixed(2);
}
function placeOrder(){
if (document.getElementById("cost") == ""
isNaN(document.getElementById("cost")
alert("Sorry,you must enter a numeric value to place order")
if (document.getElementById("tax") == ""
isNaN(document.getElementById("tax")
alert("Sorry, you must enter a numeric value to place the order");
}
</script>
</head>
<body bgcolor="#00f3F1">
<frame align="left">
<legend>
<h1 align="center">Price Calculator</h1>
</legend>
<form name="purchases" action="donut.php" method="POST">
Price:<p> <input type="text" id="cost" name="cost" value="" onchange="fixOrder">
</p>
Tax:<p> <input type="text" id="tax" name="tax" value="" onchange="fixOrder">
</p>
Total:<p> <input type="text" id="total" name="total" value="" >
</p>
</form>
</frame>
<div id="cost" name="cost" value="" onchange="placeOrder();"></div>
</body>
</html>
答案 0 :(得分:2)
您需要在此处使用连接运算符(请注意+
):
document.getElementById("cost").value = "$" + cost.ToFixed(2);
您的if
声明中也存在语法错误。他们应该是:
if (document.getElementById("cost") == "" || isNaN(document.getElementById("cost")) {
...
}
和
if (document.getElementById("tax") == "" || isNaN(document.getElementById("tax")) {
...
}
另外,请考虑缩进代码。它使阅读和维护更加容易,并且可以帮助您更轻松地发现语法错误。
还有一些其他错误(不是语法),但我会让你想出这些错误;毕竟这是功课。
编辑:看起来你是一个真正的初学者,所以除了你在课堂上学到的东西之外,我还会选择一些专为初学者量身定做的书。 Here are some that I was able to find
答案 1 :(得分:2)
在javascript中,您使用+
运算符连接字符串。而不是
document.getElementById("cost").value = "$" cost.ToFixed(2);
使用
document.getElementById("cost").value = "$" + cost.ToFixed(2);
您的if语句也是错误的。而不是
if (document.getElementById("cost") == ""
isNaN(document.getElementById("cost")
alert("Sorry,you must enter a numeric value to place order")
使用
if(isNaN(document.getElementById("cost").value))
alert("Sorry,you must enter a numeric value to place order");
答案 2 :(得分:2)
您在+
和"$"
之间遗漏了xxx.ToFixed(2)
。更重要的是,它是toFixed
,而不是ToFixed
。您还缺少任何地方的左括号(if
语句和isNaN
调用)以及两者之间的||
。
答案 3 :(得分:1)
这里有一些事情:
您应该通过为document.getElementById("cost")
设置变量来优化代码。所以var c = document.getElementById("cost");
您的if statements
缺少右括号和or
运算符。
if(document.getElementById(“cost”)==“” isNaN(的document.getElementById( “成本”)
应该是
if (document.getElementById("cost") == "" ||
isNaN(document.getElementById("cost"))
您在此处提醒后,您也错过了;
if (document.getElementById("cost") == ""
isNaN(document.getElementById("cost")
alert("Sorry,you must enter a numeric value to place order")
答案 4 :(得分:1)
正如许多其他答案已经指出的那样,您的代码存在很多问题。这个答案旨在解决所有的错误和缺点。
我将从发布的代码的顶部开始。首先,您可能根本没有将其粘贴到问题中,但是您在文件顶部缺少DOCTYPE
声明。所有HTML文档都应以DOCTYPE
开头,例如:
<!DOCTYPE html>
在JavaScript中,const
关键字虽然有效,但很多旧浏览器都不支持,绝对是最好的避免。将其替换为var
,它将没有任何区别。
要在JavaScript中连接字符串,请使用+
运算符:
document.getElementById("cost").value = "$" + cost.toFixed(2);
另请注意,我已将ToFixed
更改为toFixed
。上述行的另一个问题是变量cost
,您尚未定义。你可能意味着numPrice
,但我不完全确定!
在下一行,您使用tax
代替TAX
。 JavaScript中的变量名称区分大小写,因此tax
也未定义。
您的if
声明条件有误。我假设你是这个意思:
if(document.getElementById("cost").value == "" || isNaN(document.getElementById("cost").value)
该行有一些变化。首先,您要比较DOM元素本身(getElementById
返回DOM元素),而不是它的值。其次,你错过了右括号,最后,你需要两个条件之间的运算符。我认为你是在“或”运算符||
之后。您的第二个if
声明存在类似问题。
您在第一个alert
行的末尾错过了一个分号。虽然这仍然有效,但总是包括分号是绝对好的做法。
回到HTML,你试图调用fixOrder
JS函数,但你错过了括号:
<input type="text" id="cost" name="cost" value="" onchange="fixOrder()">
要真正挑剔,你不应该真正使用内联事件处理程序,但我不会在这里讨论。
我不确定你为什么会按照自己的方式使用frame
元素,但我觉得最好用div
取代,或者根本不用({如果你还没有发布完整的代码,我可能没有完整的图片。)
在body
标记上,您使用的是bgcolor
属性。这绝对应该被CSS取代。您可以使用background-color
属性。
答案 5 :(得分:0)
那段代码一团糟。我修好了。它现在应该工作:
function fixOrder()
{
const TAX = new Number(0.975);
var numPrice = parseFloat(document.getElementById("cost").value);
var cost = new Number(document.getElementById("cost").value);
var total = new Number(document.getElementById("total").value);
var subtotal = numPrice * TAX;
var total = new Number(subtotal + TAX);
document.getElementById("cost").value = "$" + cost.toFixed(2);
document.getElementById("tax").value ="$" + TAX.toFixed(2);
document.getElementById("total").value ="$" + total.toFixed(2);
}
function placeOrder()
{
if (document.getElementById("cost").value == "" || isNaN(document.getElementById("cost").value)) {
alert("Sorry,you must enter a numeric value to place order");
}
if (document.getElementById("tax").value == "" || isNaN(document.getElementById("tax").value)) {
alert("Sorry, you must enter a numeric value to place the order");
}
}
答案 6 :(得分:0)
这里有几个错误,首先,你需要将字符串“$”与cost.ToFixed(2)连接起来;使用连接运算符+,将其应用于接下来的两行。
其他错误在if条件中,你缺少结束)在两个if条件中,我想你想要检查文本框的值是否为空,因此你需要添加.value。
这是工作源
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Price Calculator</title>
<script type="text/javascript">
function fixOrder(){
const TAX = 0.975;
var numPrice = parseFloat(document.getElementById("cost").value);
var subtotal = numPrice * TAX;
var total = subtotal + tax;
document.getElementById("cost").value = "$" +cost.ToFixed(2);
document.getElementById("tax").value ="$" +tax.ToFixed(2);
document.getElementById("total").value ="$" +total.ToFixed(2);
}
function placeOrder(){
if (document.getElementById("cost").value == "" || isNaN(document.getElementById("cost").value))
alert("Sorry,you must enter a numeric value to place order");
if (document.getElementById("tax").value == "" || isNaN(document.getElementById("tax").value))
alert("Sorry, you must enter a numeric value to place the order");
}
</script>
</head>
<body bgcolor="#00f3F1">
<frame align="left">
<legend>
<h1 align="center">Price Calculator</h1>
</legend>
<form name="purchases" action="donut.php" method="POST">
Price:<p> <input type="text" id="cost" name="cost" value="" onchange="fixOrder">
</p>
Tax:<p> <input type="text" id="tax" name="tax" value="" onchange="fixOrder">
</p>
Total:<p> <input type="text" id="total" name="total" value="" >
</p>
</form>
</frame>
<div id="cost" name="cost" value="" onchange="placeOrder();"></div>
</body>
</html>
答案 7 :(得分:0)
<p>if ($(this).attr('name') == 'time') {
var value = $(this).val();
parseFloat(value).toFixed(2);
alert(value);
editEntry.time = value;
}
</p>