jquery 平均为 NaN
jquery NaN on average
我想获得平均评价。 jQuery 的第一部分用于进度条动画,第二部分用于获取评论平均值。但是我的 console.log
给了我 NaN
我不知道为什么。
var avg = 0;
var amount = 0;
$(".review").each(function() {
var progres = $(".progress-bar");
progres.each(function() {
avg = avg + parseInt($(".aria-valuenow").text());
amount = amount + 1;
});
});
avg = avg / amount;
console.log(avg);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="review">
<span class="progressText"><B>review 1</B></span>
<div class="progress">
<div class="progress-bar w-75" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<span class="progressText"><B>review 2</B></span>
<div class="progress">
<div class="progress-bar w-75" role="progressbar" aria-valuenow="35" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<p class="avg"></p>
</div>
您正在遍历所有进度条,但没有从该进度条中添加任何内容——回调函数从不使用 this
来获取当前元素。相反,它获取带有 class="aria-valuenow"
的元素的文本;那不是 class,它是进度条的一个属性 DIV。
我想你想要的是:
avg += parseInt($(this).attr("aria-valuenow"));
问题出在这行:
avg=avg+parseInt($(".aria-valuenow").text());
不会起作用,因为你的语句意味着 从具有 aria-valuenow class 的元素中获取文本,而你实际上 aria-valuenow
是一个属性。因此该行应如下所示:
avg += Number($(".progress-bar").prop("aria-valuenow"));
你得到 NaN
的原因(表示 NotANumber 的值)是因为所述行已扩展为以下内容:
avg += parseInt("")
和 parseInt("")
结果 NaN
以及任何进一步的总和 (NaN + 1 = NaN
)
我想获得平均评价。 jQuery 的第一部分用于进度条动画,第二部分用于获取评论平均值。但是我的 console.log
给了我 NaN
我不知道为什么。
var avg = 0;
var amount = 0;
$(".review").each(function() {
var progres = $(".progress-bar");
progres.each(function() {
avg = avg + parseInt($(".aria-valuenow").text());
amount = amount + 1;
});
});
avg = avg / amount;
console.log(avg);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="review">
<span class="progressText"><B>review 1</B></span>
<div class="progress">
<div class="progress-bar w-75" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<span class="progressText"><B>review 2</B></span>
<div class="progress">
<div class="progress-bar w-75" role="progressbar" aria-valuenow="35" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<p class="avg"></p>
</div>
您正在遍历所有进度条,但没有从该进度条中添加任何内容——回调函数从不使用 this
来获取当前元素。相反,它获取带有 class="aria-valuenow"
的元素的文本;那不是 class,它是进度条的一个属性 DIV。
我想你想要的是:
avg += parseInt($(this).attr("aria-valuenow"));
问题出在这行:
avg=avg+parseInt($(".aria-valuenow").text());
不会起作用,因为你的语句意味着 从具有 aria-valuenow class 的元素中获取文本,而你实际上 aria-valuenow
是一个属性。因此该行应如下所示:
avg += Number($(".progress-bar").prop("aria-valuenow"));
你得到 NaN
的原因(表示 NotANumber 的值)是因为所述行已扩展为以下内容:
avg += parseInt("")
和 parseInt("")
结果 NaN
以及任何进一步的总和 (NaN + 1 = NaN
)