如何求和值类仅元素显示可见的jQuery

时间:2019-06-28 00:59:19

标签: javascript jquery html

我有表格,我只想对可见行的所有列求和

这是我的代码


var plus = $('tr').css('display') != 'none');
var sum = 0;

$('.price', plus).each(function () {
      var value = $(this).text(). replace(/[^0-9]/, ' ');
      sum += parseInt(value);
});
$('result').text(sum);

2 个答案:

答案 0 :(得分:0)

这可以通过:visible选择器来实现。

在您的情况下,可以使用 Unexpected token o in JSON at position 1 Object.AddScreen._this.setName [as onChangeText] App.js:26:20 Object._onChange TextInput.js:1252:42 Object.invokeGuardedCallbackImpl ReactNativeRenderer-dev.js:93:9 invokeGuardedCallback ReactNativeRenderer-dev.js:318:30 invokeGuardedCallbackAndCatchFirstError ReactNativeRenderer-dev.js:342:24 executeDispatch ReactNativeRenderer-dev.js:715:2 executeDispatchesInOrder ReactNativeRenderer-dev.js:737:4 executeDispatchesAndRelease ReactNativeRenderer-dev.js:894:4 executeDispatchesAndReleaseTopLevel ReactNativeRenderer-dev.js:902:9 选择类为td.price:visible的{​​{1}}的{​​{1}}个元素。然后可以使用td来迭代查询结果以执行求和:

price
:visible

答案 1 :(得分:0)

假设您有<span class="price">15 $</span>并且某些父项<tr>可以是display:none;-您可以过滤所有.price属性不是offsetParent个元素空
您还可以创建一个将货币转换为数字的函数,并像这样使用它:

const currencyToNumber = currency => +(currency.replace(/[^\d.-]+/g,''));
const calculatePriceList = () => {
  const TR_visible = [...document.querySelectorAll('.price')].filter(el => el.offsetParent);
  const result = TR_visible.reduce((n, el) => n + currencyToNumber(el.textContent), 0);
  document.querySelector('#result').textContent = result;
}

calculatePriceList(); // Do it!
.none {
  display: none;
}
<table id="priceList">
  <tbody>
    <tr><td>Item 1</td><td><span class="price">15 $</span></td></tr>
    <tr><td>Item 2</td><td><span class="price">10 $</span></td></tr>
    <tr class="none"><td>Item 3</td><td><span class="price">50 $</span></td></tr>
    <tr class="none"><td>Item 4</td><td><span class="price">50 $</span></td></tr>
    <tr><td>Item 5</td><td><span class="price">3,100.00 $</span></td></tr>
    <tr><td>TOTAL</td><td><span id="result"></span></td></tr>
  </tbody>
</table>