【问题标题】:Change a number to a word using jQuery使用 jQuery 将数字更改为单词
【发布时间】:2016-11-22 09:56:59
【问题描述】:

我有一个由 CMS 生成的编号(库存编号),用于显示剩余的库存数量。我想将数字更改为“有货”或“缺货”,具体取决于它是否等于或大于零。

我有这个 sn-p,但由于某种原因,无论它是什么,它都会将数字更改为“有货” - 所以即使它是“0”,它也会显示“有货”。

显然我做错了什么,因为在这个 sn-p 中它甚至更改了模块示例,这甚至不是一个数字......

var number = $(".productStock").text();

$(document).ready(function() {
  if (number == "0") {
    $(".productStock").text('Out of stock')
  } else {
    $(".productStock").text('In stock')
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li class="productStock">{tag_instock}</li> <!--this is the module-->
  <li class="productStock">0</li> <!--I want this to say 'Out of stock'-->
  <li class="productStock">45</li> <!--I want this to say 'In stock'-->
</ul>

【问题讨论】:

  • 你真的有 3 个 &lt;li&gt; 具有相同类名的元素吗? productStock
  • @RohitAgre ...?共享类绝对没问题 - 正是它们的用途。
  • 我知道类名可以共享,甚至出现多次。我只是想让 OP 确认他们是否一起出现。或者值045 被替换为{tag_instock} @RoryMcCrossan
  • 对不起,如果我不清楚 - 它们只是页面上的示例。第一个是代码的外观,另外两个是生成的示例。页面上只有一个。

标签: jquery text numbers


【解决方案1】:

您遇到的问题是您只查看第一个 .productStock 元素(也在 document.ready 处理程序之外,但这是另一个问题)。您需要遍历它们并单独检查它们的值。

为此,您可以向text() 方法提供一个函数,该函数返回要根据当前值设置的新值,如下所示:

$(function() {
  $(".productStock").text(function(i, t) {
    return t == "0" ? 'Out of stock' : 'In stock';
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li class="productStock">{tag_instock}</li>
  <li class="productStock">0</li>
  <li class="productStock">45</li>
</ul>

【讨论】:

  • 这非常有效 - 谢谢!显然,关于构建 jQuery,我还有很多东西要学……
  • 没问题。如果有帮助,请不要忘记接受答案
【解决方案2】:

这里我们需要遍历li。所以如果我们想使用同一个类.productStock 最好使用each(function(){}) 使用这个fiddle

JS:

    $( document ).ready(function() {
      $(".productStock").each(function(){
      if($(this).text() == "0"){
            $(this).text('Out of stock')
        } else {
            $(this).text('In stock')
        }
      });      
   });

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
  • 我一定会的:)
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 2011-10-22
  • 1970-01-01
  • 2012-08-21
相关资源
最近更新 更多