如果它是字母字符串,则将int解析为0文本

时间:2019-07-12 16:39:45

标签: javascript jquery

我正在处理以下代码。如何将0个文本值的总和转换成li的字母字符串?

var banner = $("#sum");
var button = $("button");

button.on("click", function() {
  var a = 0;
  $("li").each(function() {
    a += parseInt($(this).text());
  });
  banner.text(a);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sum">
  <p>Price</p>
  <button>Get Sum</button>
</div>
<ul>
  <li>85</li>
  <li>65</li>
  <li>Not Selected</li>
  <li>Not Selected</li>
  <li>15</li>
</ul>

6 个答案:

答案 0 :(得分:3)

您可以使用jQuery的isNumeric() function清除文本:

var banner = $("#sum");
var button = $("button");

button.on("click", function() {
  var a = 0;
  $("li").each(function() {
    if ($.isNumeric($(this).text())) a += parseInt($(this).text());
  });
  banner.text(a);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sum">
  <p>Price</p>
  <button>Get Sum</button>
</div>
<ul>
  <li>85</li>
  <li>65</li>
  <li>Not Selected</li>
  <li>Not Selected</li>
  <li>15</li>
</ul>

答案 1 :(得分:0)

进行NaN检查

var banner = $("#sum");
var button = $("button");

button.on("click", function() {
  var a = 0;
  var temp = 0;
  $("li").each(function() {
    temp = parseInt($(this).text());
    if(temp !== NaN)
        a += temp;
  });
  banner.text(a);
})

答案 2 :(得分:0)

JavaScript有一个内置的方法调用isNan()。它返回一个布尔值。

button.on("click", function() {
  var a = 0;
  $("li").each(function() {
    b = parseInt($(this).text());
    isNaN(b) ? console.log("Not a number") : a+=b
  });
  banner.text(a);
})

答案 3 :(得分:0)

~(按位NOT)可以达到目的:

var banner = $("#sum");
var button = $("button");

button.on("click", function() {
  var a = 0;
  $("li").each(function() {
    a += ~~$(this).text();
  });
  banner.text(a);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sum">
  <p>Price</p>
  <button>Get Sum</button>
</div>
<ul>
  <li>85</li>
  <li>65</li>
  <li>Not Selected</li>
  <li>Not Selected</li>
  <li>15</li>
</ul>

答案 4 :(得分:0)

对于普通的JS解决方案,您可以使用isNaN来检查字符串是否不是数字,然后返回0,例如

  $("li").each(function() {
    const num = $(this).text();

    a += parseInt(isNaN(num) ? 0 : num);
  });

答案 5 :(得分:0)

由于CREATE TABLE Department( dept_id number(4) primary key, prod_id references PRODUCT ); 中的NaN is a falsy valueparseInt()返回且整数或Javascript,您可以这样做:

NaN

还要注意,我已经为a += parseInt($(this).text(), 10) || 0; 定义了radix参数,在description of parseInt()上有一个很好的解释,说明为什么最好定义10以避免意外的行为。

radix
var banner = $("#sum");
var button = $("button");

button.on("click", function()
{
    var a = 0;

    $("li").each(function()
    {
        a += parseInt($(this).text(), 10) || 0;
    });

    banner.text(a);
})