2013-02-05 83 views
71

在JavaScript中,如果窗口大小大於500像素,我會告訴瀏覽器執行某些操作。我這樣做:如何檢查數字是否在兩個值之間?

if (windowsize > 500) { 
    // do this 
} 

這很好,但我想應用這種相同的方法,但與一系列的數字。所以我想告訴我的瀏覽器做的東西,如果窗口大小在500和600px之間。我知道這是行不通的,但這是我想象的。

if (windowsize > 500-600) { 
    // do this 
} 

這甚至可能在JavaScript內?

+3

這可以幫助你:http://www.w3.org/wiki/Programming_-_the_real_basics。 –

+4

似乎有點苛刻來關閉這個問題。我可以投票重新打開它嗎?它寫得很好,並提供示例代碼。 – Caltor

回答

116
if (windowsize > 500 && windowsize < 600) { 
+1

謝謝undefined,只是爲了確認這將做我想在瀏覽器中當窗口尺寸大於500px和小於600px,本質上在500-600px範圍內運行,正確? (我不太喜歡這個東西哈哈) – Dyck

+1

@Dyck是的,它這樣做:)注意,jQuery只是一個JavaScript庫。 – undefined

+4

請注意,當「windowsize」至少爲501px並且至多爲599px時,此情況才爲真。 **排除500px和600px。**如果您希望包含這些值,請添加等於比較值。 –

52

我更願意把變量在裏面給予額外的暗示,代碼驗證我的變量之間的範圍值

if (500 < size && size < 600) { doStuff(); } 
+9

我喜歡這種風格!將適應:) – Kaii

+1

對人類來說更酷! – insign

+2

這是我的偏好,因爲它更接近python的'min daveruinseverything

1

我剛剛實施的jQuery該位顯示和隱藏bootstrap模態值。根據用戶文本框條目的值範圍顯示不同的字段。

$(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(); 
       } 
      } 
    }); 
+1

在2013年使用jQuery的瑣碎功能可能是一個選項,但不是今天 – mgamsjager

+0

@mgamsjager爲什麼你會復活一個3歲的職位,投票,這個解決方案在制定時是相關的。 – WiseGuy

+1

確實如此,但恐怕今天人們仍然會用它 – mgamsjager

78

我有一個時刻,所以,雖然你已經接受一個答案,我想我會帶來以下:

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 demo

或者,如果你寧願要檢查數量是包括端點定義的範圍選項:

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 demo

編輯爲輕微修訂添加到上面,鑑於–作爲評價–

&hellip注意到; 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));

JS Fiddle demo

並與 '包容性' 選項:

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 demo

參考文獻:

+1

爲什麼使用apply而不是直接調用像'Main.min(a,b)'? Function.prototype.apply很慢!除了在有固定數量的參數時調用它是毫無意義的。 –

+0

我將把它添加到我的默認工具箱 - 非常方便,並感謝您的貢獻! – SidOfc

+0

@SteelBrain:你有一個點!我已經更新了答案以反映這一點,儘管我懷疑我最初是使用Function.prototype.apply()的一個原因,但我無法想象它是什麼或者可能是什麼。 –

相關問題