【问题标题】:Convert and add a collection of div values to Integers将一组 div 值转换并添加到整数
【发布时间】:2026-01-27 06:40:02
【问题描述】:

我在一个页面上有各种评分值;我想获得平均评分,但是,我认为可行的还不是那么远。

<div class = "ratings">1</div>
<div class = "ratings">5</div>
<div class = "ratings">3</div>
<div class = "ratings">2</div>

我想对这些评分求和并求平均值。

function overallRating()
{
       var items = document.getElementsByClassName("ratings");
       var itemCount = items.length;
       var sum= 0;

       for(var i = 0; i < itemCount; i++)
       {
            sum += parseInt(items[i].value);
            console.log(sum)
       }
}

sum的控制台日志返回NaN

谁能告诉我哪里出错了?

【问题讨论】:

  • 为什么这个问题会被关闭?以及这个问题是如何导致的——这个问题是由无法再复制的问题或简单的印刷错误引起的。。 ?
  • @OusmaneMahyDiaw 每个用户都可以通过“投票”为所欲为。从逻辑上讲,它没有。可能有人会争辩说,.textContent 替换为.value 可以忽略不计。在逻辑上,无法证明完全遗漏了 sum 的平均值是一个问题,可以通过继续省略返回 sum 的平均值来纠正。
  • @guest271314 每个用户都可以随心所欲地“投票”不是真的,应该有一个有效的理由这样做不是因为随他们的“投票”
  • @OusmaneMahyDiaw 好吧,显然不是这样。 “应该”是不存在的。对于“投票”的评估,“有效”应仅限于“投票”是否在第一种情况下被允许,而“免费”在第二种情况下。
  • @guest271314 猜想如果“关闭”以使其重新打开,我将不得不与此案作斗争,并且必须再次向元站点强调这一点。应认真对待接近的投票,并且 随他们的“投票”而高兴

标签: javascript jquery html dom


【解决方案1】:

您可能希望使用textContent 来检索div 的文本。

sum += parseInt(items[i].textContent);

要简单地检索平均值,请在 for 循环之后插入以下代码。

return sum / itemCount;

【讨论】:

    【解决方案2】:

    div 没有名为 value 的属性(只有 inputs 有)。请改用textContent。改变这个:

    sum += parseInt(items[i].value);
    

    到这里:

    sum += parseInt(items[i].textContent);
    

    【讨论】:

    • OP 还要求平均sum
    • @guest271314 我敢打赌 OP 已经知道如何计算平均值了。
    【解决方案3】:

    使用.innerText 代替.value,并在使用前修剪;)

     sum += parseInt(items[i].innerText.trim());
    

    function overallRating() {
      var items = document.getElementsByClassName("ratings");
      var itemCount = items.length;
      var sum = 0;
    
      for (var i = 0; i < itemCount; i++) {
        sum += parseInt(items[i].innerText.trim());
        console.log(sum)
      }
    }
    <div class="ratings">1</div>
    <div class="ratings">5</div>
    <div class="ratings">3</div>
    <div class="ratings">2</div>
    <input type='submit' onClick='overallRating(this)' />

    【讨论】: