JS代码 做一个简易的购物车 效果图如下

JavaScript011

JS代码 做一个简易的购物车 效果图如下,第1张

楼主是想要点击合计就是出数值还是什么?如果说点击合计就算出值的话如下

<table width="400" border="1">

    <tr>

     <th rows="5">简易购物车</th>

    </tr>

    <tr>

     <td>商品名称</td>

     <td>数量(件)</td>

     <td>单价(美元)</td>

     <td>运费(美元)</td>

     <td><button onclick="fun()">合计</button></td>

    </tr>

    <tr>

     <td><input type="text" name="goodsName" /></td>

     <td><input type="text" name="num" id="num" /></td>

     <td><input type="text" name="price" id="price" /></td>

     <td><input type="text" name="freight" id="freight" /></td>

     <td><input type="text" name="total" id="total" /></td>

    </tr>

</table>

<script>

function fun(){

var num = document.getElementById("num").value

var price = document.getElementById("price").value

        var freight = parseInt(document.getElementById("freight").value)

        var total = (price * num) + freight

        document.getElementById("total").value = total

}

</script>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>MyHtml2.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="this is my page">

<meta http-equiv="content-type" content="text/htmlcharset=UTF-8">

<script>

/*

*@author Caoshun

*@计算 合计费用

*/

function countMethod(){

var num=document.getElementById("num").value

var unitPrice=document.getElementById("unitPrice").value

var freight=document.getElementById("freight").value

document.getElementById("result").value=parseFloat((num*unitPrice))+parseFloat(freight)

}

</script>

</head>

<body>

<table border="1" cellpadding="1" cellspacing="1" background="#red" style="text-align: center">

<tr><td colspan="5" align="center">简易购物车</td></tr>

<tr>

<td>商品名称</td>

<td>数量(件)</td>

<td>单价(美元)</td>

<td>运费(美元)</td>

<td><input type="button" value="合计" onclick="countMethod()"></td>

</tr>

<tr>

<td>跑跑道具</td>

<td><input type="text" size="6" id="num"></td>

<td><input type="text" size="6" id="unitPrice"></td>

<td><input type="text" size="6" id="freight"></td>

<td><input type="text" size="6" id="result"></td>

</tr>

</table>

</body>

</html>

关于只有最后一个文本框能触发checknum方法的问题:

其实这里有个逻辑错误,主要是<%=i%>中的i是多少的问题。从你贴出来的代码看,你是不是连JS代码也循环输出了吧,也就是有几条购物信息,就会生成几个checknum方法,在JS里,同函数名的方法如果多次定义,则只有最后一个定义的方法有效果,那最后一个checknum方法里的<%=i%>实际就只指代最后一个文本框了。结果就是只有最后一个文本框有效果。

其实楼主只需要循环输出表格,JS代码只用一个就行了,只要在文本框触发JS动作时,把<%i%>作为参数传进JS方法就行了,例如,你可以这么写:

...

<td width="58" height="30"><input name="num<%=i%>" size="5" type="text" value="<%=goodsitem.number%>" onBlur="checknum(this.form,<%=i%>)"></td>

...

把JS方法放到循环外面,这么写:

function checknum(myform,i){

var inp = myform['num'+i]

if(isNaN(inp.value) || inp.value.indexOf('.')!=-1){

alert("请不要输入非法字符!")inp.focus()return}//判断是否为数字值

if(inp.value><%=leave%>){alert("请输入小于现有库存 ("+<%=leave%>+") 的数量!")inp.focus()return}

if(inp.value==0){

alert("请输入大于1的整数!")inp.focus()return}

if(inp.value==""){

alert("请输入修改的数量!")inp.focus()return}

myform.submit()

}

关于数字修改后触发checknum方法的问题:

楼主的checknum方法最后是要提交表单的,所以如果用键盘事件,那每一次输入一个字符或删除一个字符,都会触发表单提交动作,这应该不是楼主要的结果。字符修改后触发JS方法有专门的事件处理方法onchange。楼主可以吧onblur换成onchange试试。