В JavaScript я говорю браузеру что-то сделать, если размер окна больше 500 пикселей. Я так делаю:
if (windowsize > 500) {
// do this
}
Это отлично работает, но я хотел бы применить тот же метод, но с диапазоном чисел. Поэтому я хотел бы сообщить своему браузеру, что нужно делать, если размер окна составляет от 500 до 600 пикселей. Я знаю, что это не сработает, но вот как я это себе представлял:
if (windowsize > 500-600) {
// do this
}
Возможно ли это вообще в JavaScript?
javascript
Дайк
источник
источник
Ответы:
Проверяет,
windowsize
является ли значение больше500
или меньше, чем600
означает, что ни одно из значений500
или600
само по себе не приведет к выполнению условия.if (windowsize > 500 && windowsize < 600) { // ... }
источник
windowsize
значений от 501 до 599 пикселей. 500 пикселей и 600 пикселей исключены. Добавьте равенство к сравнениям, если вы хотите включить эти значения.if(500 < windowsize && windowsize < 600)
У меня был момент, поэтому, хотя вы уже приняли ответ, я подумал, что внесу следующее:
Number.prototype.between = function(a, b) { var min = Math.min.apply(Math, [a, b]), max = Math.max.apply(Math, [a, b]); return this > min && this < max; }; var windowSize = 550; console.log(windowSize.between(500, 600));
Демо JS Fiddle .
Или, если вы предпочитаете иметь возможность проверять, находится ли число в заданном диапазоне, включая конечные точки :
Number.prototype.between = function(a, b, inclusive) { var min = Math.min.apply(Math, [a, b]), max = Math.max.apply(Math, [a, b]); return inclusive ? this >= min && this <= max : this > min && this < max; }; var windowSize = 500; console.log(windowSize.between(500, 603, true));
Демо JS Fiddle .
Отредактировано, чтобы добавить небольшую поправку к вышеизложенному, учитывая, что - как отмечено в комментариях -
стоило исключить использование
Function.prototype.apply()
, которое дает измененные версии вышеуказанных методов, во-первых, без опции 'inclusive':Number.prototype.between = function(a, b) { var min = Math.min(a, b), max = Math.max(a, b); return this > min && this < max; }; var windowSize = 550; console.log(windowSize.between(500, 600));
Демо JS Fiddle .
И с опцией «включительно»:
Number.prototype.between = function(a, b, inclusive) { var min = Math.min(a, b), max = Math.max(a, b); return inclusive ? this >= min && this <= max : this > min && this < max; } var windowSize = 500; console.log(windowSize.between(500, 603, true));
Демо JS Fiddle .
Ссылки:
Function.prototype.apply()
.Math.max()
.Math.min()
.источник
Main.min(a,b)
? Function.prototype.apply работает медленно! Кроме того, вызывать его, когда у вас есть фиксированное количество аргументов, бессмысленно.Function.prototype.apply()
, но я не могу понять, что это было или могло быть.Number
объект. Это анти-шаблон, и он придет и укусит вас, если стандарты ECMA изменятся и включатNumber.between()
функцию, или если другая библиотека или другой фрагмент кода будут определены вNumber.prototype.between
другом месте с другим определением. Вместо этого создайте вспомогательную функцию и используйте ее!Я предпочитаю помещать переменную внутри, чтобы дать дополнительный намек на то, что код проверяет, что моя переменная находится между значениями диапазона
if (500 < size && size < 600) { doStuff(); }
источник
min < testval < max
синтаксису PythonЭто старый вопрос, но он может быть полезен кому-то вроде меня.
lodash
имеет_.inRange()
функцию https://lodash.com/docs/4.17.4#inRangeПример:
_.inRange(3, 2, 4); // => true
Обратите внимание, что этот метод использует
Lodash
служебную библиотеку и требует доступа к установленной версии Lodash.источник
_.inRange(10, 0, 10) // => false
Javascript
, стоит отметить, что этот метод используетLodash
служебную библиотеку и требует доступа к установленной версии Lodash.Вы можете использовать предложение Multiple в
if
условии вместо записиif (windowsize > 500-600) { // do this }
потому что логически это не имеет смысла, JavaScript прочитает ваше условие if, например
windowSize > -100
потому что он рассчитывает
500-600
на-100
Вы должны использовать
&&
для строгой проверки оба случая, например, которые будут выглядеть такif( windowSize > 500 && windowSize < 600 ){ // Then doo something }
источник
Я только что реализовал этот бит jQuery, чтобы показывать и скрывать модальные значения начальной загрузки. Различные поля отображаются в зависимости от диапазона значений записи текстового поля пользователя.
$(document).ready(function () { jQuery.noConflict(); var Ammount = document.getElementById('Ammount'); $("#addtocart").click(function () { if ($(Ammount).val() >= 250 && $(Ammount).val() <= 499) { { $('#myModal').modal(); $("#myModalLabelbronze").show(); $("#myModalLabelsilver").hide(); $("#myModalLabelgold").hide(); $("#myModalPbronze").show(); $("#myModalPSilver").hide(); $("#myModalPGold").hide(); } } });
источник
$().val()
имеет значения и не нужен. Но опять же, в исходной версии вопроса OP упоминает jQuery для простой арифметической проверки. (вздох) Это первая ошибка.Вот самый короткий из возможных способов:
if (Math.abs(v-550)<50) console.log('short') if ((v-500)*(v-600)<0) console.log('short')
Параметризовано:
if (Math.abs(v-max+v-min)<max+min) console.log('short') if ((v-min)*(v-max)<0) console.log('short')
Вы можете разделить обе стороны на 2, если не понимаете, как работает первая;)
источник