在 JavaScript 中,如果窗口大小大于 500 像素,我会告诉浏览器执行某些操作。我这样做:
if (windowsize > 500) {
// do this
}
这很好用,但我想应用同样的方法,但有一系列数字。所以我想告诉我的浏览器在窗口大小在 500px 到 600px 之间时做些什么。我知道这行不通,但这是我的想象:
if (windowsize > 500-600) {
// do this
}
在 JavaScript 中这是否可能?
在 JavaScript 中,如果窗口大小大于 500 像素,我会告诉浏览器执行某些操作。我这样做:
if (windowsize > 500) {
// do this
}
这很好用,但我想应用同样的方法,但有一系列数字。所以我想告诉我的浏览器在窗口大小在 500px 到 600px 之间时做些什么。我知道这行不通,但这是我的想象:
if (windowsize > 500-600) {
// do this
}
在 JavaScript 中这是否可能?
测试是否windowsize
大于500
和小于600
意味着值500
或600
本身都不会导致条件变为真。
if (windowsize > 500 && 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));
或者,如果您希望选择检查数字是否在定义的范围内,包括端点:
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));
鉴于——如评论中所述——编辑对上述内容进行了小修改
……
Function.prototype.apply()
慢!除了当你有固定数量的参数时调用它是没有意义的......
值得删除的使用Function.prototype.apply()
,它产生上述方法的修改版本,首先没有“包容性”选项:
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));
并使用“包容性”选项:
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));
参考:
我更喜欢将变量放在里面,以提供额外的提示,即代码正在验证我的变量是否在一个范围值之间
if (500 < size && size < 600) { doStuff(); }
这是一个老问题,但可能对像我这样的人有用。
lodash
具有_.inRange()
功能https://lodash.com/docs/4.17.4#inRange
例子:
_.inRange(3, 2, 4);
// => true
请注意,此方法使用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
}
这是一个通用方法,你可以在任何地方使用
const isBetween = (num1,num2,value) => value > num1 && value < num2
你可以简单地做到这一点
if (windowsize > 500 && windowsize < 600) {
//your logic
}
或者,如果您想要干净的代码,您可以在任何常见位置的主 js 文件中编写自己的函数。
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;
};
然后你可以这样称呼它
if(windowsize.between(500, 600)){
//your logic
}
这是可能的最短方法:
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;)
我刚刚实现了一点 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();
}
}
});
就像大卫的回答一样,但我需要 a 或 b 的包容性。所以我的溶胶:
export const between = (num: number, a: number, b: number, inclusiveA = true, inclusiveB = true): boolean => {
if (a > b) [a, b, inclusiveA, inclusiveB] = [b, a, inclusiveB, inclusiveA];
if (a == b && (inclusiveA || inclusiveB)) [inclusiveA, inclusiveB] = [true, true];
return (inclusiveA ? num >= a : num > a) && (inclusiveB ? num <= b : num < b);
};
if (require.main === module) {
console.log(between(12, 15, 10)); //true
console.log(between(15, 15, 10)); //true
console.log(between(15, 10, 15)); //true
console.log(between(10, 10, 15, false)); //false
console.log(between(15, 10, 10, true, false)); //false
//edge case: if a==b then enough that either of the edges is inclusive
console.log(between(10, 10, 10, true, false)); //true
}
它也是打字稿而不是javascript
function handleBetween(number, calc) {
let [a, b] = calc;
let min = Math.min(a, b), max = Math.max(a, b);
return number > min && number < max;
}
if(510 >500 && 510 <600){
console.log(`510 >500 && 510 <600 is true`)
}
if(610 >500 && 610 <600){
// false
console.log(`610 >500 && 610 <600 is true`)
} else console.log(`610 >500 && 610 <600 is false`)
console.log(handleBetween(510, [500, 600])); // true
console.log(handleBetween(610, [500, 600])); // false