为什么我使用jQuery获取[object object]?

时间:2019-05-31 10:28:05

标签: javascript jquery

我有一个函数,我想使用下面给出的变量尝试对两个数字求和,但是我正在获取[object object]而不是总和。

 
var convenienceCharge = 100;
var totalPgCost = 500;
var subTotalPgCost = 0;

function totalPgCostFunction() {

subTotalPgCost += $('.subTotalPgCost').text(convenienceCharge +  totalPgCost + 18);

alert(subTotalPgCost);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button onclick="totalPgCostFunction();">Click</button>

2 个答案:

答案 0 :(得分:2)

.text将返回一个对象。这就是为什么您看到[object object]

您需要这样做。

var convenienceCharge = 100;
var totalPgCost = 500;
var subTotalPgCost = 0;

function totalPgCostFunction() {

subTotalPgCost += convenienceCharge +  totalPgCost + 18;

$('.subTotalPgCost').text(subTotalPgCost);
alert(subTotalPgCost);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button onclick="totalPgCostFunction();">Click</button>
<div class="subTotalPgCost"></div>

答案 1 :(得分:2)

问题是因为当您调用text()的setter时,它将返回一个jQuery对象,因此您将看到输出。

要完成这项工作,您需要将计算和text()逻辑分开,如下所示:

var convenienceCharge = 100;
var totalPgCost = 500;
var subTotalPgCost = 0;

$(function() {
  $('button').click(function() {
    subTotalPgCost += convenienceCharge + totalPgCost + 18;
    $('.subTotalPgCost').text(subTotalPgCost);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button>Click</button>
<div class="subTotalPgCost"></div>

还请注意,在此示例中使用了不显眼的事件处理程序,而不是过时的on*属性。