【问题标题】:Calculation in Javascript returns NaNJavascript 中的计算返回 NaN
【发布时间】:2018-12-30 00:06:20
【问题描述】:

我正在尝试用 Javascript 进行计算。但是脚本返回的是 NaN。

我曾尝试使用numberparseIntparseFloat 转换数据,但没有成功。

有人知道我的脚本有什么问题吗?

这是我的 Javascript

$('[id^=neg_pos]').each( function( i, e) {
  var quantity = e.options[e.selectedIndex].value;

  if ( quantity==='0') {

  } else if ( quantity==='1') {
    var num1 = Number(document.getElementsByName('price[]').value);
    var num2 = Number(document.getElementsByName('tax[]').value);

    var tv1 = num1 + num2;
    pos += tv1;

  } else {
    var num1 = Number(document.getElementsByName('price[]').value);
    var num2 = Number(document.getElementsByName('tax[]').value);

    var tv1 = num1 + num2;
    neg += tv1;
  }

document.getElementById('positive').value = pos.toFixed(2);
document.getElementById('negative').value = neg.toFixed(2);

});

文本框 price[]tax[] 是用 Javascript 创建的动态文本框。

以下是文本框: 第一个文本框是在 HTML 中创建的:

<input type="text" name="price[]" id="price1" onkeypress="return isNumber(event, this)" data-srno="1">
<input type="text" name="tax[]" id="tax1" onkeypress="return isNumber(event, this)" data-srno="1">

其他文本框是用 Javascript 创建的

$(document).on('click', '#add_row', function(){
  count++;
  $('#total_item').val(count);
  var html_code = '';
  html_code += '<input type="text" name="price[]" id="price'+count+'" onkeypress="return isNumber(event, this)" data-srno="'+count+'">';
  html_code += '<input type="text" name="tax[]" id="tax'+count+'" onkeypress="return isNumber(event, this)" data-srno="'+count+'">';

  $('#test').append(html_code);
});

【问题讨论】:

  • getElementsByName 返回一个元素数组。所以没有value 属性。
  • @John Gabriel 是正确的。 document.getElementsByName('price[]') 将返回一个没有 value 属性的 NodeList。你的意思是document.getElementsByName('price[]')[0].value? (注意[0]

标签: javascript jquery html arrays


【解决方案1】:

你应该改用document.getElementById(),像这样:

var num1 = Number(document.getElementsByName('price[]').value);
var num2 = Number(document.getElementsByName('tax[]').value);

原因是您试图访问 getElementsByName 返回的数组的 value 属性,该属性不存在 - 您必须首先使用 [0] 才能访问元素本身。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2021-03-24
    • 1970-01-01
    • 2017-10-25
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多