Измените число на слово, используя jQuery

У меня есть номер (номер запаса), который создается с помощью CMS и отображает, сколько товаров осталось на складе. Я хотел бы изменить число на "В наличии" или "Нет в наличии" в зависимости от того, равно ли оно нулю или больше.

У меня есть этот фрагмент, но по какой-то причине он меняет номер на "В наличии", независимо от того, что это такое - поэтому даже когда его "0", он говорит "В наличии".

Очевидно, что я делаю что-то не так, потому что в этом фрагменте даже изменен пример модуля, который даже не является числом...

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>

2 ответа

Проблема в том, что вы смотрите только на первое .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>

Здесь нам нужно пройти li, Так что, если мы хотим использовать тот же класс .productStock его хорошо использовать each(function(){})Используйте эту скрипку:

JS:

    $( document ).ready(function() {
      $(".productStock").each(function(){
      if($(this).text() == "0"){
            $(this).text('Out of stock')
        } else {
            $(this).text('In stock')
        }
      });      
   });
Другие вопросы по тегам