2014-02-20 2 views
0

Мне удалось настроить скрипт для отображения «проданной» метки, если элемент имеет 0, и если у элемента 1000 отображается «продажа», и это отлично работает.javascript Если Меньше, чем продажа дисплея

Я хочу знать, как я могу настроить ярлык для отображения «продался», если элемент менее, чем 1000, так точно не 1000

Я бы просто крылатый его с этим, поставив «<» перед номером 1000.

<script type="text/javascript"> 
jq(function() { 
    jq("span.spn_U3").each(function() { 
     switch(jq(this).text()) { 
      case "0": 
       jq(this).closest(".stylesummarytext").prev() 
        .append('<div class="styleoverlay soldout"><span>Sold Out</span></div>'); 
       break; 
      case "<1000": 
       jq(this).closest(".stylesummarytext").prev() 
        .append('<div class="styleoverlay sellingout"><span>Selling Out</span></div>'); 
       break; 
     } 
    }); 
}); 
</script> 

заранее спасибо

+2

также, пожалуйста, отформатируйте свой JS, чтобы он был читабельным. У него больше шансов заставить людей дать ответы. –

+0

@ Анонимно ясно указано в заголовке и втором абзаце. Просто уточнить, желая отобразить «Продажа» от значения 1-999 и отобразить «продано» на 0 значение – Jc0807

+0

@DrydenLong не относится только к значениям 999, которые должны быть точными, а не от 1-999 ? – Jc0807

ответ

0

Javascript switch..case конечно, не обрабатывает логические операторы, встроенные внутри строки. Просто используйте стандартные условные обозначения.

6

Не используйте инструкцию switch. Используйте if/else:

qty = parseInt(jq(this).text(), 10); 

if (qty == 0) { 
    jq(this).closest(".stylesummarytext").prev() 
    .append('<div class="styleoverlay soldout"><span>Sold Out</span></div>'); 
} else if (qty < 1000) { 
    jq(this).closest(".stylesummarytext").prev() 
    .append('<div class="styleoverlay sellingout"><span>Selling Out</span></div>'); 
} 

Обратите внимание, что вы можете использовать в switch о сложных случаях, но нет никаких убедительных оснований для этого для такого простого множества случаев:

qty = 0; 

switch(true) { 
case qty == 0: 
    jq(this).closest(".stylesummarytext").prev() 
    .append('<div class="styleoverlay soldout"><span>Sold Out</span></div>'); 
    break; 
case qty < 1000: 
    jq(this).closest(".stylesummarytext").prev() 
    .append('<div class="styleoverlay sellingout"><span>Selling Out</span></div>'); 
    break; 
} 
+0

И просто уточнить для ОП, почему: Исходный код использует строки текста, а не целые числа, что означает, что символ '<' не будет вести себя так, как ожидалось. Никакой математики не было сделано в инструкции 'switch', но с оператором' if/else' в этом ответе вы можете успешно применить свое правило ко всем целям ниже 1000. –

+0

Спасибо за это @DrydenLong просто быстрый вопрос что является ли число «10» в первой части кода? qty = parseInt (jq (this) .text(), 10); извините, что я до сих пор довольно новичок в jq/js – Jc0807

+0

@ user3303786 Это 'radix', и он указывает систему нумерации, которая будет использоваться. Подробнее об этом можно узнать здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt#Syntax –

Смежные вопросы