求助多个select值怎么相加

qq_36509661 2017-02-08 02:07:55
<select class="addbed_select">
<option value="0">不加</option>
<option value="1">1张</option>
<option value="2">2张</option>
<option value="3">3张</option>
</select>
<select class="addbed_select">
<option value="0">不加</option>
<option value="1">1张</option>
<option value="2">2张</option>
<option value="3">3张</option>
</select>
默认情况下只有一个select ,根据需要可以动态添加多个同名的select
$(document).on('change','.addbed_select',function(){
var sum=0;
$('.addbed_select').each(function(){
sum =$('.addbed_select').val();
});
var thisval=$(this).val();
console.log('这个select的值为'+thisval);
console.log('总select的值为'+sum);
});
$(this)所取到的值是对的,但总select的值一直是第一个select的值,如果第一个select没选择的吧,总select值就是0
...全文
331 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
soonyolsd 2017-02-13
  • 打赏
  • 举报
回复
sum =$('.addbed_select').val(); 楼主,你这一句有问题,这个class不唯一,2楼的方法就可以回避这个问题。
soonyolsd 2017-02-13
  • 打赏
  • 举报
回复
引用 2 楼 wuqinfei_cs 的回复:

<select  class="addbed_select">
    <option value="0">不加</option>
    <option value="1">1张</option>
    <option value="2">2张</option>
    <option value="3">3张</option>
</select>
<select  class="addbed_select">
    <option value="0">不加</option>
    <option value="1">1张</option>
    <option value="2">2张</option>
    <option value="3">3张</option>
</select>
<script>

$(document ).on( 'change', '.addbed_select', function () {
    var sum = 0;
    $( '.addbed_select' ).each( function () {
        sum += parseInt( $( this ).val() );
    } );
    var thisval = $( this ).val();
    console.log( '这个select的值为' + thisval );
    console.log( '总select的值为' + sum );
} );
</script>
正解
forwardNow 2017-02-10
  • 打赏
  • 举报
回复

<select  class="addbed_select">
    <option value="0">不加</option>
    <option value="1">1张</option>
    <option value="2">2张</option>
    <option value="3">3张</option>
</select>
<select  class="addbed_select">
    <option value="0">不加</option>
    <option value="1">1张</option>
    <option value="2">2张</option>
    <option value="3">3张</option>
</select>
<script>

$(document ).on( 'change', '.addbed_select', function () {
    var sum = 0;
    $( '.addbed_select' ).each( function () {
        sum += parseInt( $( this ).val() );
    } );
    var thisval = $( this ).val();
    console.log( '这个select的值为' + thisval );
    console.log( '总select的值为' + sum );
} );
</script>
脱壳WaGua 2017-02-10
  • 打赏
  • 举报
回复
sum是局部变量 事件每次触发后sum都会先变成0 然后在变成你选择的那个值 你把var sum=0放到外面 里面写成sum+=$('.addbed_select').val();
suano 2017-02-10
  • 打赏
  • 举报
回复
$('.addbed_select').val(); 这样取值肯定会取到第一个的值吧,最好每个select定义带序号的id
bo菠萝 2017-02-10
  • 打赏
  • 举报
回复
这个坑我以前也遇到过,每次点击事件都变成0,结果把变量放到外面就解决问题了

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧