我正在使用jQuery获取元素的高度。 但是如果该元素不存在,以下代码将返回NULL:
$height = $('#menu li.active ul').height(); // returns integer or null
以下代码是一种跨浏览器安全的获取整数值的方法,适用于所有情况吗?
$height = $('#menu li.active ul').height() + 0;
我正在使用jQuery获取元素的高度。 但是如果该元素不存在,以下代码将返回NULL:
$height = $('#menu li.active ul').height(); // returns integer or null
$height = $('#menu li.active ul').height() + 0;
有很多方法可以处理这个问题。您描述的添加整数值以强制转换类型的方法是可行的。您还可以显式地转换为数字:
$height = Number($('#menu li.active ul').height());
// or:
$height = +$('#menu li.active ul').height();
或者您可以使用逻辑运算符,因为 null
会被强制转换为 false
:
$height = $('#menu li.active ul').height() || 0;
是的,它是安全的。
一个更短的替代方案:
$height = +$('#menu li.active ul').height();
$
之前的+
)0
。在Chrome 52中测试过。 - Christoph+ $(“.non-existing-class”).height()
。 - Christoph最简单的方法是这样做...
$height = $('#menu li.active ul').height() || 0;
这里的false值将会是:
我的简短解决方案是:
$height = $('#menu li.active ul').height() || 0
。
如果您想要更详细的解决方案,您可以查看其他用户的答案。
编辑:它也取决于jQuery版本。
这实际上是更好的做法...
if($('#menu li.active ul').length > 0){
$height = $('#menu li.active ul').height();
}else{
......
}
我使用了上面被接受的答案和其他练习,得到了一个不错的结果。
我们可以使用parseFloat或parseInt,它们会给出0或实际值。请参见演示,特别是最后一个结果:
function myFunction() {
var a = parseFloat("10") + "<br>";
var b = parseFloat("10.00") + "<br>";
var c = parseFloat("10.33") + "<br>";
var d = parseFloat("34 45 66") + "<br>";
var e = parseFloat(" 60 ") + "<br>";
var f = parseFloat("40 years") + "<br>";
var g = (parseFloat("1.1234") ||0) + "<br>";
var n = a + b + c + d + e + f + g;
document.getElementById("demo").innerHTML = n;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Click the button to parse different strings.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
只需检查元素是否存在:
var $height = 0;
if($('#menu li.active ul').length > 0){
$height = $('#menu li.active ul').height();
}
$("#menu li.active ul")
是否不为 null
:$height = $('#menu li.active ul') != null ? $('#menu li.active ul').height() : 0;
+ 0
将把null
强制转换为0
。 - evolutionxbox