在JavaScript中,如果窗口大小大于500px,我要告诉浏览器执行某些操作。我这样做是这样的:
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()
,这会产生上述方法的修改版本,首先没有'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));
参考文献:
我更喜欢将变量放在里面,以进一步提示代码正在验证我的变量在范围值之间
if (500 < size && size < 600) { doStuff(); }
这是一个老问题,但是对像我这样的人可能有用。
lodash
具有_.inRange()
功能https://lodash.com/docs/4.17.4#inRange
例:
_.inRange(3, 2, 4);
// => true
请注意,此方法利用Lodash
实用程序库,并且需要访问Lodash的已安装版本。
您可以在if
条件中使用Multiple子句,而无需编写
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();
}
}
});
这是最短的方法:
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;)
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!