Корпус переключателя в jquery
Я пишу правильный корпус коммутатора?
var cnt = $("#div1 p").length;
alert(cnt);
switch (cnt) {
case (cnt >= 10 && cnt <= 20):
alert('10');
break;
case (cnt >= 21 && cnt <= 30):
alert('21');
break;
case (cnt >= 31 && cnt <= 40):
alert('31');
break;
default:
alert('>41');
}
По какой-то причине предупреждение не возникает, если условия совпадают!
Ответы
Ответ 1
Вы не должны использовать switch
для этого сценария. Это правильный подход:
var cnt = $("#div1 p").length;
alert(cnt);
if (cnt >= 10 && cnt <= 20)
{
alert('10');
}
else if (cnt >= 21 && cnt <= 30)
{
alert('21');
}
else if (cnt >= 31 && cnt <= 40)
{
alert('31');
}
else
{
alert('>41');
}
Ответ 2
Коммутатор работает, сравнивая, что находится в switch()
, с каждым case
.
switch (cnt) {
case 1: ....
case 2: ....
case 3: ....
}
работает как:
if (cnt == 1) ...
if (cnt == 2) ...
if (cnt == 3) ...
Следовательно, вы не можете иметь никакой логики в операторах case.
switch (cnt) {
case (cnt >= 10 && cnt <= 20): ...
}
работает как
if (cnt == (cnt >= 10 && cnt <= 20)) ...
и это просто вздор.:)
Используйте if () { } else if () { } else { }
вместо этого.
Ответ 3
Это должно сработать с этим:
var cnt = $("#div1 p").length;
switch (true) {
case (cnt >= 10 && cnt <= 20):
alert('10');
break;
case (cnt >= 21 && cnt <= 30):
alert('21');
break;
case (cnt >= 31 && cnt <= 40):
break;
default:
alert('>41');
}
Ответ 4
Что-то, с чем я столкнулся при попытке работать с прядильщиком, - это обеспечить гибкость в script без использования трёх выражений if.
Так как это более простое решение, чем повторение с помощью массива для проверки одного экземпляра класса, он поддерживает очиститель script. Любые предложения по очистке кода далее приветствуются.
$('.next').click(function(){
var imageToSlide = $('#imageSprite'); // Get id of image
switch(true) {
case (imageToSlide.hasClass('pos1')):
imageToSlide.removeClass('pos1').addClass('pos2');
break;
case (imageToSlide.hasClass('pos2')):
imageToSlide.removeClass('pos2').addClass('pos3');
break;
case (imageToSlide.hasClass('pos3')):
imageToSlide.removeClass('pos3').addClass('pos4');
break;
case (imageToSlide.hasClass('pos4')):
imageToSlide.removeClass('pos4').addClass('pos1');
}
}); `
Ответ 5
Что вы делаете, это искать (0) или (1) результаты.
(cnt >= 10 & cnt <= 20) возвращает либо true, либо false.
- edit--
вы не можете использовать случай с логическими (логическими) экспериментами. Оператор cnt >= 10 возвращает ноль для false или один для true. Следовательно, это будет случай (1) или случай (0), который никогда не будет соответствовать длине.
--edit -
Ответ 6
function date_conversion(start_date){
var formattedDate = new Date(start_date);
var d = formattedDate.getDate();
var m = formattedDate.getMonth();
var month;
m += 1; // JavaScript months are 0-11
switch (m) {
case 1: {
month="Jan";
break;
}
case 2: {
month="Feb";
break;
}
case 3: {
month="Mar";
break;
}
case 4: {
month="Apr";
break;
}
case 5: {
month="May";
break;
}
case 6: {
month="Jun";
break;
}
case 7: {
month="Jul";
break;
}
case 8: {
month="Aug";
break;
}
case 9: {
month="Sep";
break;
}
case 10: {
month="Oct";
break;
}
case 11: {
month="Nov";
break;
}
case 12: {
month="Dec";
break;
}
}
var y = formattedDate.getFullYear();
var now_date=d + "-" + month + "-" + y;
return now_date;
}
Ответ 7
Случай с коммутатором - это всякая помощь, полная, а не инструкция if else:
switch ($("[id*=btnSave]").val()) {
case 'Search':
saveFlight();
break;
case 'Update':
break;
case 'Delete':
break;
default:
break;
}