<SCRIPT LANGUAGE="JavaScript">
<!--
function changenum(price,type,id,uid){
    price=parseFloat(price);
num = parseInt($("#numid"+id).val());
if(type==1){ //增加
num++;
}else if(type==-1){ //减少
num--;
}else if(type==0){ //删除
num=0
}
if(type!=0 && num==0){
alert('数量不能小于1,若不想购买,请选择删除');
num=1;
}
$("#numid"+id).val(num);
$("#showid"+id).html(String(num*price));

obj=$(".shows"+uid);

thispice = 0;
for(i=0;i<obj.size();i++){
thispice+=parseFloat(obj.eq(i).html());
}
$("#total"+uid).html(thispice); if(type==0){
$.get("join.php?type=setcookie&cid="+id+"&num="+0);
$("#tr"+id).hide();
}else{
$.get("join.php?type=setcookie&cid="+id+"&num="+num+"&"+Math.random());
}

obj2 = $(".totalprice");
if(obj2.size()>1){
thispice = 0;
for(i=0;i<obj2.size();i++){
thispice+=parseFloat(obj2.eq(i).html());
}
$("#total_all").html(thispice);
}
}
//-->
</SCRIPT>
<span id="total$rs[uid]" class="totalprice">$total</span>元
================================说明=======================================以上的功能是程序中以有的js执行代码 能够正常的把改变$total的值,以下是我想要加的功能,就是当我选择ems20元时,那么在 $total本身是100元那么这时就是120元,当我选择平邮50元时,那么在 $total本身是100元那么这时就是150元,   加个运费的值,(如果没选择默认是快递10元。) 求高手帮我在原有的js基础 加下现在功能js代码,谢谢!================================说明=======================================<select id="collect" name="youfen">
<option value='10'>快递:10元</option>
<option value='20'>EMS:20元</option>
<option value='50'>平邮:50元</option>
</select>

解决方案 »

  1.   

    <select id="collect" name="youfen" onchange="Add(this.value)">
    加js函数
    function Add(x)
    {
     $(".totalprice").html(parseInt($(".totalprice").html() + parseInt(x)))
    }
      

  2.   

    首先非常大师帮回答我的问题,非常非常谢谢。但是还有几个问题我阐述下:1.当此时的变量 $total 的值为100元时, 我用你给的代码加进去,测试后得的结果是:当我选择平邮50元时,此时变量 $total 的值为10050元时而不是显示的150元,当我选择快递10元时,此时变量 $total 的值为1005010元时,而不是显示的110元。2.当此时的变量 $total 的值为100元时,默认没有加上快递10元的值。3.我给的以上js代码他里面好像考虑到了多个用户 所以这里有 id="total$rs[uid]"这个变量,希望也能帮我考虑下。4.如果我想 用多少个变量显示最终的结果 此时的代码应该怎么写,如: <font id="total$rs[uid]" class="totalprice1">$total</font>元
     <font id="total$rs[uid]" class="totalprice2">$total</font>元
      

  3.   

    本帖最后由 net_lover 于 2012-08-19 20:45:23 编辑
      

  4.   

    <!DOCTYPE html>
    <meta charset="utf-8">
    <html>
    <head>
      <title></title>
    </head>
    <body>
    <select id="collect" name="youfen">
      <option value='10' date-chose='1'>快递:10元</option>
      <option value='20' date-chose='0'>EMS:20元</option>
      <option value='50' date-chose='0'>平邮:50元</option>
    </select>
    <span id="total$rs[uid]" class="totalprice">110</span>元
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js"></script>
    <script type="text/javascript">
      function changenum(price, type, id, uid) {
        price = parseFloat(price);
        num = parseInt($("#numid" + id).val());
        if (type == 1) {  //增加
          num++;
        } else if (type == -1) {  //减少
          num--;
        } else if (type == 0) {  //删除
          num = 0
        }
        if (type != 0 && num == 0) {
          alert('数量不能小于1,若不想购买,请选择删除');
          num = 1;
        }
        $("#numid" + id).val(num);
        $("#showid" + id).html(String(num * price));    obj = $(".shows" + uid);    thispice = 0;
        for (i = 0 ; i < obj.size() ; i++) {
          thispice += parseFloat(obj.eq(i).html());
        }
        $("#total" + uid).html(thispice);    if (type == 0) {
          $.get("join.php?type=setcookie&cid=" + id + "&num=" + 0);
          $("#tr" + id).hide();
        } else {
          $.get("join.php?type=setcookie&cid=" + id + "&num=" + num + "&" + Math.random());
        }    obj2 = $(".totalprice");
        if (obj2.size() > 1) {
          thispice = 0;
          for (i = 0 ; i < obj2.size() ; i++) {
            thispice += parseFloat(obj2.eq(i).html());
          }
          $("#total_all").html(thispice);
        }
      }
      /**
       * 计算运费的代码如下!!!!!!!!!!!!!!!!!!!!!!!
       */
      $("#collect").change(function() {
        var oldSentpice = parseInt($("option[date-chose='1']").val(), 10);
        var value = parseInt(this.value, 10) + parseInt($(".totalprice").text()) - oldSentpice;
        $(".totalprice").text(value);
        $("option[date-chose='1']").attr("date-chose", "0");
        $("option:selected").attr("date-chose", "1");
      });
    </script></body></html>
      

  5.   

    还是得感你急速的回答:
    但有以下问题,请再次帮助。(多用户考虑到了,非常不错。但是有以下问题)
    测试结果为:当此时的变量 $total 的值为100元时,当我选择select下拉框的 快递:10元 时,此时的 $total 为10元了,而不是在 100元的基础 +10 等于110元。
    问题2.没有加上默认的10元,快递费
      

  6.   

    你的代码不全,无法完全了解你要实现什么效果比如说吧用多少个变量显示最终的结果 此时的代码应该怎么写,如: <font id="total$rs[uid]" class="totalprice1">$total</font>元
     <font id="total$rs[uid]" class="totalprice2">$total</font>元
    这里就莫名其妙,1个select同时改变这2个地方的内容?那代码写成一样的就可以了,或者多写一行代码就可以了我想,这并不是你想要的效果吧?其实,你要是了解js和HTMLDOM,实现这样的功能很简单,也不需要什么jquery之类的东西有时候,提问者觉得,我的问题怎么老是没人回答或者回答的结果不是我想要的?原因就在于,提问者根本就没把问题描述清楚,或者贴的代码支离破碎,或者只是部分代码,别人无法明白你要什么。
      

  7.   

    <!--
    EOT;
    if($step==1){
    print <<<EOT
    -->
    <div class="main">
    <form name="form_order" method="post" action="?action=$atc" enctype="multipart/form-data">
    <div class="shopcartbox">
    <div class="shopcart2">
    <!--
    EOT;
    $total_all=0;
    $jinbi_all=0;
    foreach($listdb AS $name=>$array){
    $total=0;
    $jinbi=0;
    print <<<EOT
    -->
    <ul class="u1">
    <li class="l1"><div><input type="checkbox" name="" id="" checked="checked" /> 全选</div></li>
    <li class="l2">商品</li>
    <li class="l3">返积分</li>
    <li class="l4">数量</li>
    <li class="l5">单价</li>
    <li class="l6">总价</li>
    </ul>
    <!--
    EOT;
    foreach($array AS $rs){
    $rs[picurl]=$rs[picurl]?$rs[picurl]:"$webdb[www_url]/images/default/nopic.jpg";
    $rs[picurl]=tempdir($rs[picurl]);
    @extract($db->get_one("SELECT content FROM {$_pre}content_$rs[mid] WHERE id=$rs[id]"));
    $content=preg_replace('/<([^<]*)>/is',"",$content); //把HTML代码过滤掉
    $content=preg_replace('/ | |&nbsp;/is',"",$content); //把多余的空格去除掉
    $content= get_word($content,100);
    $total+=$rs[price2];
    $total_all+=$rs[price2];
    $jinbi+=$rs[jinbi2];
    $jinbi_all+=$rs[jinbi2];print <<<EOT
    -->
    <ul class="u2" id="tr$rs[id]">
    <li class="l1"><input type="checkbox" name="" id="" checked="checked" /></li>
    <li class="l2"><a href="bencandy.php?city_id=$rs[city_id]&fid=$rs[fid]&id=$rs[id]" class="pic" target="_blank"><img src="$rs[picurl]"height="90" onError="this.src='$webdb[www_url]/images/default/nopic.jpg'"/></a><h3><a href="bencandy.php?city_id=$rs[city_id]&fid=$rs[fid]&id=$rs[id]" target="_blank">$rs[title]</a></h3><p>$rs[content]</p></li>
    <li class="l3">0分</li>
    <li class="l4">{$rs[num]}</li>
    <li class="l5"><font>{$rs[price]}</font>元</li>
    <li class="l6"><font id="showid$rs[id]" class="shows$rs[uid]">{$rs[price2]}</font>元</li>
    </ul>
    <!--
    EOT;
    }print <<<EOT
    -->
    <ul class="u3"><div class="fr">
    <p class="p1">
    运送方式:
    <!--
    EOT;
    if($rs[youfei]=="1"){print <<<EOT
    -->
    <select id="collect" name="postdb[youfei]" onchange="Add(this.value,'total$rs[uid]')">
    <option value='10'>快递:10元</option>
    <option value='20'>EMS:20元</option>
    <option value='50'>平邮:50元</option>
    </select><SCRIPT LANGUAGE="JavaScript">
    <!--
    function changenum(price,type,id,uid){
        price=parseFloat(price);
    num = parseInt($("#numid"+id).val());
    if(type==1){ //增加
    num++;
    }else if(type==-1){ //减少
    num--;
    }else if(type==0){ //删除
    num=0
    }
    if(type!=0 && num==0){
    alert('数量不能小于1,若不想购买,请选择删除');
    num=1;
    }
    $("#numid"+id).val(num);
    $("#showid"+id).html(changeTwoDecimal(String(num*price)));

    obj=$(".shows"+uid);

    thispice = 0;
    for(i=0;i<obj.size();i++){
    thispice+=parseFloat(obj.eq(i).html());
    }
    $("#total"+uid).html(thispice); if(type==0){
    $.get("join.php?type=setcookie&cid="+id+"&num="+0);
    $("#tr"+id).hide();
    }else{
    $.get("join.php?type=setcookie&cid="+id+"&num="+num+"&"+Math.random());
    }

    obj2 = $(".totalprice");
    if(obj2.size()>1){
    thispice = 0;
    for(i=0;i<obj2.size();i++){
    thispice+=parseFloat(obj2.eq(i).html());
    }
    $("#total_all").html(thispice);
    }
    }
    function changeTwoDecimal(x){
    var f_x = parseFloat(x);
    if(isNaN(f_x)){
    alert('function:changeTwoDecimal->parameter error');
    return false;
    }
    var f_x = Math.round(x*100)/100;
    return f_x;
    }
    function Add(m,id){
        document.getElementById(id).innerHTML = parseInt(document.getElementById(id).getAttribute("total")+parseInt(m))
    //--></SCRIPT>
    <!--
    EOT;
    }print <<<EOT
    -->
    </p>
    <p class="p2"><strong>店铺商品合计:</strong>(含运费) <font id="total$rs[uid]" class="totalprice">$total</font>元</p>
    </div><div class="fl">
    <p class="p1"><stron>卖家:{$rs[username]}</strong></p>
    <p class="p2">给卖家留言:<textarea  name='postdb[content]' id='atc_content' >$rsdb[content]</textarea></p>
    </div>
    </ul>
    <!--
    EOT;
    }print <<<EOT
    -->
    <!--
    EOT;
    if(count($listdb)>1){
    print <<<EOT
    -->
    <ul class="u4"><div><strong>商品总价:</strong>(含运费) <font id="total_all">$total_all</font>元</div></ul>
    <!--
    EOT;
    }print <<<EOT
    -->
    </div>
    </div><div class="clear20"></div>
    <div class="shoppostbox">
    <div class="shoppostdiv">
    <div class="shopinfo">
    <p><span>实付款:</span>
    <!--
    EOT;
    if(count($listdb)>1){
    print <<<EOT
    -->
    <font id="total$rs[uid]" class="totalprice">$total_ll</font>元
    <!--
    EOT;
    }else{print <<<EOT
    -->
    <font id="total$rs[uid]" class="totalprice">$total</font>元
    <!--
    EOT;
    }print <<<EOT
    -->
    </p>{$address_selects}
    </div>
    </div>
    <div class="shop_postbtn">
              <input type="submit" name="imageField" id="imageField" class="shop-submit" value=" " />
              <input type="hidden" name="fid" value="$fid">
              <input type="hidden" name="id" value="$id">
              <input type="hidden" name="cid" value="$cid">
              <input type="hidden" name="postdb[title]" id="atc_title" size="50" value="$infodb[title]">
              </div>
    <!--
    EOT;
    if($job=='edit'){print <<<EOT
    -->
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    $(document).ready(function(){
    $("#othermore").show();$("#dobutton").hide();
    });
    //-->
    </SCRIPT>
    <a href="?action=del&id=$id&cid=$cid&fid=$rsdb[fid]" onClick="return confirm('你确认要删除吗?');">删除</a> 
    <!--
    EOT;
    }print <<<EOT
    -->
    </div><script language="JavaScript">
    <!--
    function chooseAddress(selObj){
    value = selObj.options[selObj.selectedIndex].value;
    if(value=='-1'){
    ifHideMoreTr(false);
    }else{
    ifHideMoreTr(true);
    }
    }
    function ifHideMoreTr(type){
    var arr = ["username","phone","mobphone","email","qq","postcode","address" ];
    $("#othermore input").each(function (i){
    if(jQuery.inArray(this.name.replace(/postdb\[order_([\w]+)\]/, "$1"),arr)!=-1){
    obj=$(this).parent().parent();
    if(type==true){
    obj.hide()
    }else{
    obj.show()
    }
    }
    });
    }$(document).ready(function(){
    sObj = $("#choose_Address");
    if(sObj.get(0).options.length==1||"$job"=="edit"){
    sObj.parent().parent().hide();
    ifHideMoreTr(false);
    }else{
    ifHideMoreTr(true);
    }
    });
    //-->
    </script>
     </form>
    </div>
    <!--
    EOT;
    }
    print <<<EOT
    -->
    <div class="clear20"></div>
    </div>
    <!--
    EOT;
    ?>
    -->
    ====上面是我整个页面的代码======以下是图片功能说明==================
    当我选择ems20运费时,在运送方式中点击下拉框中的运费时那么就用 店铺合计总价+ 20元  当我点击平邮50元时,店铺合计总价+ 50元.我说的要二个地方显示,是因为他如果存在二个不同的商家的商品时,会有二个商家合起来的总价和 商家商品本身的总价
      

  8.   

    <select id="collect" name="postdb[youfei]" onchange="Add(this.value,'total$rs[uid]')">
    <option value='10'>快递:10元</option>
    <option value='20'>EMS:20元</option>
    <option value='50'>平邮:50元</option>
    </select>
    对name="postdb[youfei]"属性进行操作,在action中设置名为postdb[youfei]的参数,即:private String postdb[youfei],然后生成get/set方法,就可以取到值了~~~
      

  9.   

    其实不要那么复杂,就是在total_all的基础上加上运费而已。
    ①、初期的运费可以在$("#total_all").html(thispice);上面加。
    所以将$("#total_all").html(thispice);改为$("#total_all").html(thispice + Number($('#collect').val()));即可。
    ②、改变运费的时候加一个select监听。
    $('#collect').change(function() {
        $("#total_all").html(eval($('#total_all').html() + '+' + $(this).val());});
    }