在javascript中添加表值给出了NaN表格单元格中的结果
问题描述:
我在总表格单元格值中得到了NaN的结果。每次用户输入数量时,我将添加两个正在计算的总单元。我想弄明白为什么我会得到这个结果。这是在其中进行计算的函数的代码。在javascript中添加表值给出了NaN表格单元格中的结果
<html>
<head>
<title> Cart </title>
<h1> My cart </h1>
<script type = "text/javascript">
function retr()
{
var cke = document.cookie;
var tot1 = document.getElementById("t1").value;
var tot2 = document.getElementById("t2").value;
if (cke.length>0) {
start = cke.indexOf("Circle=");
if (start!= -1) {
start = start + 7
end = cke.indexOf("$", start);
if (end == -1) end = cke.length;
qu1 = cke.substring(start, end);
document.getElementById("q1").value = qu1;
}
}
if (cke.length>0) {
start1 = cke.indexOf("$");
if (start1!= -1) {
start1 = start1 + 0
end = cke.indexOf("e", start1);
if (end == -1) end = cke.length;
pr1 = cke.substring(start1, end);
document.getElementById("p1").value = pr1;
}
}
document.getElementById("t1").value = parseFloat(qu1) * parseFloat(pr1);
if (cke.length>0) {
start = cke.indexOf("Stickman=");
if (start!= -1) {
start = start + 9
end = cke.indexOf("$", start);
if (end == -1) end = cke.length;
qu2 = cke.substring(start, end);
document.getElementById("q2").value = qu2;
}
}
if (cke.length>0) {
start = cke.indexOf("$");
if (start!= -1) {
start = start + 54
end = cke.indexOf("e", start);
if (end == -1) end = cke.length;
pr2 = cke.substring(start, end);
document.getElementById("p2").value = pr2;
}
}
alert(qu1);
alert(pr1);
alert(qu2);
alert(pr2);
alert(t2);
document.getElementById("t2").value = parseFloat(qu2) * parseFloat(pr2);
document.getElementById("tot").value = parseFloat(tot1) + parseFloat(tot2);
document.getElementById("ret").value = cke;
}
</script>
</head>
<body onload = "retr()">
<table border = "1">
<td>Circle </td>
<td><input type = "text" size = "8" id = "q1" readonly = "readonly" /></td>
<td> <input type = "text" size = "8" id = "p1" readonly = "readonly" /> </td>
<td> <input type = "text" size = "8" id ="t1"> </td>
<tr> </tr>
<td> Stickman </td>
<td> <input type = "text" size = "8" id = "q2" readonly = "readonly" /></td>
<td> <input type = "text" size = "8" id = "p2" readonly = "readonly" /> </td>
<td> <input type = "text" size = "8" id = "t2" > </td>
<tr> </tr>
<td colspan = "3"> TOTAL:</td>
<td> <input type = "text" size = "8" id = "tot"> </td>
</table>
<br /> <br />
<input type ="text" id = "ret" readonly = "readonly" />
<br/> <br />
<input type = "button" value = "Checkout">
<br /> <br />
<a href = "store.html" > Continue Shopping </a>
</body>
</html>
答
好了,假设你的cookie看起来是这样的:
"Circle=123$456e; Stickman=123$456e"
我有固定的代码运行。这是一个工作示例:
你在你的代码中的几个问题,要点:
- 你不停的“$”符号是不是一个数字,因此你得到了 NaN
- 您填写的 填充后没有设置变量tot1和tot2,或者至少您没有提供默认值。
- 搜索第二个价格时,您没有使用最后一个“$”符号的start1位置作为起点。因此你以错误的价格结束了。
是否可以看演示? – 2012-04-27 21:13:59
尝试在http://jsfiddle.net/ – snies 2012-04-27 21:15:51
上发布示例Console.log在各个阶段显示这些值,以便您可以看到它们的值。也许其中一个是未定义的。 – Jack 2012-04-27 21:16:08