【问题标题】:JavaScript: how to sum values of variables and display as div?JavaScript:如何对变量的值求和并显示为 div?
【发布时间】:2017-01-30 17:41:20
【问题描述】:

我是 JS 的新用户,我正在尝试对 HTML 输入中的 2 个值求和。

问题: 我有 3 个 HTML 输入:

  • type=number输入(从输入字段中选择数字);
  • 2 个输入,type=radio

我想实时将number 字段的值与所选radio 按钮的值相加(使用jQuery)。

JS:

$('#quantity').click(function () {
    $('#sum').text($(this).val());
});

$('#y').click(function () {
    var y = document.querySelector('#y').value;
    $('#sum').text($(this).val()).y;
}); 

$('#x').click(function () {
    var x = document.querySelector('#x').value;
    $('#sum').text($(this).val()).x;
}); 

HTML:

<form>
    <input id="quantity" type="number">
    <input id="y" name="math" type="radio" value="0">
    <input id="x" name="math" type="radio" value="1">
</form>
<span id="sum"></span>

我只想将所选radio 输入的值添加到“数量”字段中的值。

示例:如果“数量”字段的值为“100”并且我单击“x”单选按钮(值 = 1),则打印“101”。

【问题讨论】:

  • xy 不是 jQuery 属性,您需要 $("#sum").text($(this).val()+x);。此外,当您仅获取 ID 时,请使用 getElementById 而不是 querySelector。此外,您可以使用 this.value 而不是 $(this).val(),因为您似乎在混合原生 DOM 和 jQuery。

标签: javascript jquery html


【解决方案1】:

在您的表单中添加一个id(例如,我在这里使用了myForm),然后尝试以下方式:

$('#myForm input').change(function() {
  var quantityVal = +$('#quantity').val();
  var radioVal = +$('[name="math"]:checked').val();
  var sum = quantityVal + radioVal;
  $('#sum').text(sum)
});

在这里,我们为表单中的所有输入添加了一个更改侦听器,这样如果其中任何一个以任何方式发生更改(不是像您之前那样单击),该函数就会运行。然后我们使用 jQuery 从输入的数量以及 checked 的无线电中获取值。您会注意到我们还使用unary + 来确保它们都被转换为整数。

最后我们只设置了sum span 的值。以上内容应该可以帮助您完成大部分工作,尽管您可能应该为空单选值添加一些错误检查(或设置一个默认值)。

Live example here

【讨论】:

  • 你最好parseInt() 这些值,否则你会得到一些时髦的字符串连接。 ;)
  • 你怎么看?它们已经在第 2 行和第 3 行使用一元加号进行转换
  • 天哪!我的错 。 . .我没有看到它们(它们太小了!:D)。做得很好。
【解决方案2】:

这个怎么样?

// Any time this is edited, update
$('#quantity').on("input", function() {
  $('#sum').text(sumThem() );
});

// ANY radio button with the name math
//  gets clicked, we do this ONE function.
$('[name=math]').click(function() {
  $('#sum').text(sumThem() );
});

function sumThem(){
  var qty = parseInt($("#quantity").val()) || 0;
  var addend = parseInt($("[name=math]:checked").val()) || 0;
  
  return qty + addend;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <input id="quantity" type="number">
  <input id="y" name="math" type="radio" value="0">
  <input id="x" name="math" type="radio" value="1">
</form>
<span id="sum"></span>

有几个小问题:首先,当文本输入更新时,它没有添加到单选按钮中。其次,如果没有单击单选按钮,则会出现 NaN 问题。现在,当您输入文本时,如果没有单击单选,则该值设置为 0。

【讨论】:

  • 谢谢,它有效。但是有一个错误:如果我首先点击收音机(而不是输入=数字),系统会打印“NaN”。 @雪猴
  • 这应该是固定的。通过将总和移至单独的函数,两个动作的功能完全相同。错误检查是您的朋友。
  • 谢谢,它有效。最后我还需要一件事:如果我首先选择单选按钮,然后按输入 = 数字键,出于安全原因需要取消选中单选按钮。我尝试添加这一行:$("#y").checked = false;@Snowmonkey
  • 好的,我刚刚修复了这行:document.getElementById('y').checked = false; 可以把这段代码嵌入到 jQuery 中吗?
  • 不确定您所说的“将其嵌入到 jQuery 中是什么意思,您可能只是想将其保存到您的外部 js 文件之一中,并与您执行的任何其他脚本一起加载它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多