JavaScript将NULL转换为0

问题描述 投票:3回答:8

我正在使用jQuery来获取元素的高度。但是如果该元素不存在,则以下代码将返回NULL:

$height = $('#menu li.active ul').height(); // returns integer or null

使用以下代码在各种情况下获取整数值是一种跨浏览器的安全方式:

$height = $('#menu li.active ul').height() + 0;
javascript jquery null integer
8个回答
7
投票

有很多方法可以解决这个问题。你描述的那个,添加一个整数值来强制类型是好的。您还可以显式转换为数字:

$height = Number($('#menu li.active ul').height());
// or:
$height = +$('#menu li.active ul').height();

或者你可以使用逻辑运算符作为null强制到false

$height = $('#menu li.active ul').height() || 0;

3
投票

这是安全的,是的。

更短的选择:

$height = +$('#menu li.active ul').height();

(注意+之前的$


2
投票

这是一个更好的方法...

if($('#menu li.active ul').length > 0){
   $height = $('#menu li.active ul').height();
}else{
    ......
}

2
投票

我的简短解决方案是:$height = $('#menu li.active ul').height() || 0

如果您需要更具描述性的解决方案,可以查看其他用户的答案。

编辑:这也取决于jQuery版本。


1
投票

最简单的方法..

$height = $('#menu li.active ul').height() || 0;

这里假值将是......

  • 空值
  • 未定义
  • " "
  • 0
  • NaN

0
投票

只需检查元素是否存在:

var $height = 0;
if($('#menu li.active ul').length > 0){
  $height = $('#menu li.active ul').height();
}

0
投票

你可以检查$("#menu li.active ul")是不是null

$height = $('#menu li.active ul') != null ? $('#menu li.active ul').height() : 0;

0
投票

我使用了上面接受的答案和其他练习,这给了我一个很好的结果。

我们可以使用parseFloat或parseInt,它们给出0或实际值。最后看一下demo最后的结果:

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>
© www.soinside.com 2019 - 2024. All rights reserved.