jQuery函数不返回值

4
我得到了错误的计算结果,函数没有返回.investment元素中的3个值,因此我无法计算它们并将其输出到.payout元素中。这里我做错了什么?

function investmentArray() {
  $('.investment').each(function() {
    var text = $(this).text().slice(0, -2);
    text = parseFloat(text.replace(/,/g, ''));
    text = Number(text);
    return text;
  });
};

function payoutCalc() {
  var i = investmentArray();
  return i * 1.8;
}

var payoutArray = function() {
  var el = $('.payout');
  el.each(function() {
    var result = Number(payoutCalc()).toFixed(2);
    $(this).html(result + " $");
  });
}
payoutArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <th>Investment</th>
    <th>Payout</th>
  </tr>
  <tr>
    <td class="investment">1,937.00 $</td>
    <td class="investment">285.00 $</td>
    <td class="investment">1,926.00 $</td>
  </tr>
  <tr>
    <td class="payout"></td>
    <td class="payout"></td>
    <td class="payout"></td>
  </tr>
</table>

1个回答

6
问题在于你试图从jquery的.each()循环中返回。你需要传递索引并获取元素,而不是使用循环。
要退出$.each循环,必须在循环回调中返回false。返回true则跳过下一次迭代,相当于普通循环中的continue。

function investmentArray(c) {
  text = $('.investment').eq(c).text().slice(0, -2);
  text = parseFloat(text.replace(/,/g, ''));
  text = Number(text);
  return text;
};

function payoutCalc(c) {
  var i = investmentArray(c);
  return i * 1.8;
}

var payoutArray = function() {
  var el = $('.payout');
  el.each(function(i, val) {
    var result = Number(payoutCalc(i)).toFixed(2);
    $(this).html(result + " $");
  });
}
payoutArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <th>Investment</th>
    <th>Payout</th>
  </tr>
  <tr>
    <td class="investment">1,937.00 $</td>
    <td class="investment">285.00 $</td>
    <td class="investment">1,926.00 $</td>
  </tr>
  <tr>
    <td class="payout"></td>
    <td class="payout"></td>
    <td class="payout"></td>
  </tr>
</table>


哇!那真是太快了!非常感谢您,先生!我想我需要更多地学习关于循环的知识! :) - Randy
@Randy,在普通的for循环中这不是问题。但在jQuery each循环中,当你使用return时,它意味着要么中断循环,要么继续循环。它不会将值返回给外部函数。 - rrk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接