0

我的问题是为什么当我单击按钮时,唯一显示的是这个“价格表”,而所有其他带有变量的行都被省略了。

function showmessage() {
    var sendcost, totalcost;
    if (document.pricelist.total.value<11) {
        sendcost = 3; 
    }   
    else {
        sendcost = 2; 
    }   
    if (document.pricelist.option.checked) {
        sendcost = parseInt(document.pricelist.option.value) + parseInt(sendcost);
    }
    totalcost = parseInt(sendcost) + parseInt(document.pricelist.total.value);

    document.write("Pricelist","</br>");
    document.write("Products price: "+document.pricelist.total.value+"</br>");
    document.write("Send fee: "+sendcost+"</br>");
    document.write("Total cost: "+totalcost+"</br>");
}
<form name="pricelist">
Tuna Salad = 4 <input type="checkbox" name="choice" value="4" onchange="checkTotal()" /></br>
Pasta = 13 <input type="checkbox" name="choice" value="13" onchange="checkTotal()" /></br>
Milk = 3 <input type="checkbox" name="choice" value="3" onchange="checkTotal()" /></br>
Chocolate = 2 <input type="checkbox" name="choice" value="2" onchange="checkTotal()" /></br>
Same day delivery<input type="checkbox" name="option" value="5" /></br>
Total: <input type="text" size="2" name="total" value="0"/>
<input type="button" value="Procceed to checkout" onclick='return showmessage();' />
4

3 回答 3

0

document.write在页面加载后调用时会破坏整个页面,因此将不再有名称为 pricelist 的表单,因此document.pricelist.total.value会导致Uncaught TypeError: Cannot read property 'total' of undefined,这会导致您的脚本过早终止。

我建议使用除document.write.

但是为了避免当前错误,只需在document.pricelist.total.value变量销毁之前将其值保存到变量中即可。

var value = document.pricelist.total.value;
document.write("Pricelist","</br>");
document.write("Products price: "+value+"</br>");
document.write("Send fee: "+sendcost+"</br>");
document.write("Total cost: "+totalcost+"</br>");
于 2012-11-01T23:01:01.770 回答
0

它在显示“产品价格:”后停止工作的原因是因为接下来的 2 行代码有语法错误。

更新:

document.write("Send fee: "+sendcost+"</br>);
document.write("Total cost: "+totalcost+"</br>;

至:

document.write("Send fee: "+sendcost+"</br>");
document.write("Total cost: "+totalcost+"</br>");

同时更新:

document.write("Pricelist","</br>");

至:

document.write("Pricelist</br>");

然后将您的格式错误的</br>标签修复为<br />

于 2012-11-01T22:40:12.103 回答
0

使用 Firebug 进行调试。真正优秀的 Firefox 工具 http://getfirebug.com/

Chrome和Internet Explorer也有相当不错的内部调试工具按F12打开。

这些工具让您可以直观地进行调试——您可以单步执行每个脚本命令并观察会发生什么

于 2012-11-01T23:07:21.347 回答