Javascript 使用jQuery从同级添加值

Javascript 使用jQuery从同级添加值,javascript,jquery,html,Javascript,Jquery,Html,嗨,伙计们,我已经为这个脚本工作了一段时间,我只是不能让它工作得很好,我可能错过了一个重要的论点,让它正常工作 我需要计算标记内部的值,并将总数相加到a,这是HTML: <div class="catProdAttributeItem"> <input type="radio" id="5583116" name="752526"> <span>Ford £19.99</span> <img src="http://w

嗨,伙计们,我已经为这个脚本工作了一段时间,我只是不能让它工作得很好,我可能错过了一个重要的论点,让它正常工作

我需要计算标记内部的值,并将总数相加到a,这是HTML:

<div class="catProdAttributeItem">
    <input type="radio" id="5583116" name="752526">
    <span>Ford £19.99</span>
    <img src="http://www.breakerlink.com/blog/wp-content/uploads/2014/01/Ford.png">
</div>

<div class="catProdAttributeItem">
    <input type="radio" id="5971554" name="752526">
    <span>Ferrary £19.99</span>
    <img src="http://www.assettocorsa.net/wp-content/uploads/2013/09/logo2.png">
</div> 
<br><br>
    <span style="display:none;" class="original_price">£0.00</span>
    <div class="updated_price" id="show-price">£0.00</div>
我只能得到点击兄弟姐妹的结果,非常感谢您的帮助

我希望在选择输入时将.updated_price上显示的值相加,但它将在更广泛的输入集上工作,您可以检查更多输入,并从所有检查的输入中获得结果


您需要每辆车的复选框(不是收音机)。见下文:

$(文档).ready(函数(){
$('.catProdAttributeItem img')。打开(“单击”,函数(){
//进行复选框调整
$(this).sides('input:checkbox')。单击();
});
$(文档)。在('单击','输入:复选框',calcTotal)上);
});
函数calcTotal(){
var总价=0;
//查找所有.catProdAttributeItem divs
$(文档).find('.catProdAttributeItem').each(函数(){
//查看是否选中该复选框以添加到总价中
var$checkbox=$(this.find('input:checkbox');
如果($checkbox.is(':checked')){
var text=$(this.find('span').html();
总价+=parseFloat(text.replace(/[^0-9\.]/g'))
}
});
//最后显示价格
$('.updated_price').html('英镑'+总价.toFixed(2));
}
.catProdAttributeItem{
宽度:300px;
浮动:左;
显示:内联块;
文本对齐:居中;
}
img{
宽度:100px;
高度:自动;
}
.最新价格{
明确:两者皆有;
利润率:20px 50px;
}

福特19.99英镑
法拉利19.99英镑



英镑0.00
根据我对您的理解,您只需迭代所有
.catProdAttributeItem
元素,并仅在选中单选按钮时添加价格:

var warehouse_price = 0;

$('.catProdAttributeItem')
    .filter(function() {
        // only interested in checked radio boxes
        return $('input:checked', this).length > 0;
    })
    .each(function() {
        var price = parseFloat($('span', this).text().replace(/[^\d.]/, ''));
        warehouse_price += price;
    });

$('.updated_price').html('£' + total_price.toFixed(2));

这个答案是Sigismundus answer+一点技巧的组合,能够从单选按钮和复选框中获取结果。img点击没有很好地工作,但是现在如果添加一个新功能,以单选按钮的形式获取图像,它会工作

var priceSelect = parseFloat(document.getElementById("totalprice").value);
$('.catProdAttributeItem input[type=radio], .catProdAttributeItem input[type=checkbox] ').on("click", function() {
    var total_price = 0;
    $(document).find('.catProdAttributeItem').each(function() {
      var $checkbox = $(this).find('input:radio, input:checkbox');
      if ($checkbox.is(':checked')) {
        var text = $(this).find('span').html();
        total_price += parseFloat(text.replace(/[^0-9\.]/g, ''))
      }
    });
    $('#totalprice').html('£' + total_price.toFixed(2));

    document.getElementById('totalprice').value = total_price+priceSelect;
  });

你生成了那个代码吗?我是说。。。加价?如果是这样,您可以先将值放入数据属性中。什么不起作用以及预期的行为是什么?请检查fiddle fiddle存在问题,因为您的外部jQuery是通过http加载的,而http被浏览器阻止的-尽管HTML5现在在现代浏览器上得到了很好的支持,请注意,HTML4规范规定id必须以字母开头。您知道我的想法,但触发器是图像。单击图像后,收音机bt获得选中值并添加来自兄弟姐妹(span)的值,您的脚本出于某种原因没有返回和。@Skwashy Oops,我使用了错误的选择器;它现在应该可以工作了。嘿,杰克,谢谢,但我仍然无法让它在控制台上工作。它没有抓取结果,但它现在阻止我使用同一个单选按钮,非常奇怪。我发布消息说,我希望它能够点击图像,单选按钮将激活,并在ID容器上汇总结果,但你的问题是,当我点击图片时,我也必须点击复选框,dunowhy!因此,我最终想为什么不将该函数分配给单选按钮和复选框,并创建另一个函数,使图像成为单选按钮,并且由于某种原因,您的代码在选中另一组中的另一个复选框进行汇总时没有得到结果,所以我创建了一个调用,以添加ID容器中的内容+一个新值谢谢你,太棒了!就是那个!我以前使用过css,但它在浏览器兼容性方面落后于grampa IE。catProdAttributeItem>input{/*隐藏单选项/可见性:隐藏;/makeinput not clickable/position:absolute;/Remove input from document flow/}.catProdAttributeItem>input+img{/图像样式/光标:指针;边框:2px实心透明;}.catProdAttributeItem>input:checked+img{/(单选项)图像样式*/border:2px solid#f00;}谢谢兄弟!我做到了!你帮了我很大的忙,你懂Javascript多久了?我开始了一门网络课程,但要记住所有这些类并将它们结合起来并不容易。我有时会发疯-好几年了。现在有了jQuery(没有IE),一切都很简单;o)
var priceSelect = parseFloat(document.getElementById("totalprice").value);
$('.catProdAttributeItem input[type=radio], .catProdAttributeItem input[type=checkbox] ').on("click", function() {
    var total_price = 0;
    $(document).find('.catProdAttributeItem').each(function() {
      var $checkbox = $(this).find('input:radio, input:checkbox');
      if ($checkbox.is(':checked')) {
        var text = $(this).find('span').html();
        total_price += parseFloat(text.replace(/[^0-9\.]/g, ''))
      }
    });
    $('#totalprice').html('£' + total_price.toFixed(2));

    document.getElementById('totalprice').value = total_price+priceSelect;
  });