JavaScript конвертировать NULL в 0

Я использую jQuery, чтобы получить высоту элемента. Но если элемент не существует, следующий код вернет NULL:

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

Это безопасный межбраузерный способ получения целочисленного значения при любых обстоятельствах с помощью следующего кода:

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

7 ответов

Решение

Есть много способов справиться с этим. Тот, который вы описываете, добавление целочисленного значения для приведения типа в порядке. Вы также можете преобразовать в число явно:

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

(обратите внимание на + перед $)

Самый простой способ сделать это..

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

Здесь ложное значение будет..

  • ложный
  • ноль
  • не определено
  • ""
  • 0
  • NaN

Это лучший подход Infact...

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

Мое краткое решение:$height = $('#menu li.active ul').height() || 0,

Если вы хотите более описательное решение, вы можете проверить ответы других пользователей.

Изменить: Это зависит от версии JQuery тоже.

Вы можете проверить, если $("#menu li.active ul") не является null:

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

Я использовал принятый выше ответ и другие упражнения, которые дают мне хороший результат.

Мы можем использовать с 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();
}
Другие вопросы по тегам