在JavaScript中,如果窗口大小大于500px,我要告诉浏览器执行某些操作。我这样做是这样的:
if (windowsize > 500) {
// do this
}
这很好用,但是我想使用相同的方法,但是要有一定范围的数字。所以我想告诉我的浏览器在窗口大小介于500px和600px之间时做些什么。我知道这行不通,但是这是我的想象:
if (windowsize > 500-600) {
// do this
}
在JavaScript中甚至可能吗?
在JavaScript中,如果窗口大小大于500px,我要告诉浏览器执行某些操作。我这样做是这样的:
if (windowsize > 500) {
// do this
}
这很好用,但是我想使用相同的方法,但是要有一定范围的数字。所以我想告诉我的浏览器在窗口大小介于500px和600px之间时做些什么。我知道这行不通,但是这是我的想象:
if (windowsize > 500-600) {
// do this
}
在JavaScript中甚至可能吗?
Answers:
测试是否windowsize大于500或小于600表示值500或值600本身均不会导致条件变为真。
if (windowsize > 500 && windowsize < 600) {
// ...
}
windowsize在至少501px和最多599px 时,此条件才成立。排除500px和600px。如果要包含这些值,请在比较中添加相等性。
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));
或者,如果您希望选择检查数字是否在包括端点在内的已定义范围内:
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(),这会产生上述方法的修改版本,首先没有'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));
并使用“包含”选项:
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));
参考文献:
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语法
这是一个老问题,但是对像我这样的人可能有用。
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的已安装版本。
我刚刚实现了这部分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;)