如何在Javascript中检查空值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Javascript中检查空值?相关的知识,希望对你有一定的参考价值。

我正在研究一种在我的表单中检索隐藏输入数组的方法

<input type="hidden" value="12:34:00" name="timetemp0">
<input type="hidden" value="14:45:00" name="timetemp1">
<input type="hidden" value="15:12:00" name="timetemp2">
<input type="hidden" value="16:42:12" name="timetemp3">
<input type="hidden" value="16:54:56" name="timetemp4">
<input type="hidden" value="17:03:10" name="timetemp5">

我的javascript函数使用getElementsByName('timetemp'+ i)单独检索这些函数

    for (i ; i < counter[0].value; i++)
        {
//finds hidden element by using concatenation of base name plus counter

var timetemp = document.getElementsByName('timetemp'+i);

//if there is a value alert that value to user - this is just for testing purposes at the moment
//because there is only one of timetemp.i then it occupies position 0 in array
            if (timetemp[0].value == null)
            {
                alert ('No value');

            }
            else
            {
                alert (timetemp[0].value);

            }
}

那么应该发生的是它会提醒用户该隐藏输入中的值,但是如果它来自输入,没有像这样的值:

<input type="hidden" value="" name="timetemp16">

然后会说“没有价值”

但是,如果函数似乎不能用于此:

我试过了:

  1. (timetemp[0].value == null)
  2. (timetemp[0].value === null)
  3. (timetemp[0].value == undefined)
  4. (timetemp[0].value == '')

似乎总是默认为else子句。

有任何想法吗?

答案

评论作为答案:

if (timetime[0].value)

这是有效的,因为JS中的任何变量都可以作为布尔值进行求值,因此这通常会捕获空,空或未定义的内容。

另一答案

首先,我会检查i被初始化的内容,以查看getElementsByName返回的元素是否与您认为的一样。也许通过尝试使用像timetemp0这样的硬编码名称来解决问题,而不需要连接。您还可以通过浏览器调试器(FireBugChrome Dev ToolsIE Dev Tools)运行代码。

另外,对于你的if条件,这应该足够了:

if (!timetemp[0].value) {
    // The value is empty.
}
else {
    // The value is not empty.
}

Javascript中的空字符串是一个假值,因此逻辑否定将使您进入if块。

另一答案

在我看来,使用“if(value)”判断一个值是否为空值并不严格,因为当v的值为0时,“v?true:false”的结果为false(0不为空值)。你可以使用这个功能:

const isEmptyValue = (value) => {
    if (value === '' || value === null || value === undefined) {
        return true
    } else {
        return false
    }
}
另一答案

您的脚本在某些地方似乎不正确。

试试这个

var timetemp = document.getElementsByTagName('input');

for (var i = 0; i < timetemp.length; i++){
    if (timetemp[i].value == ""){
        alert ('No value');
    }
    else{
        alert (timetemp[i].value);
    }
}

示例:http://jsfiddle.net/jasongennaro/FSzT2/

这是我改变的:

  1. 通过input获得所有TagNames开始。这就是一个数组
  2. i初始化var,然后使用timetemp属性在timetemp.length数组中循环。
  3. timetemp[i]来引用input中的每个for statement
另一答案

for循环中的计数器显示不正确(或者我们缺少一些代码)。 Here's a working Fiddle

这段代码:

//Where is counter[0] initialized?
for (i ; i < counter[0].value; i++)

应该替换为:

var timeTempCount = 5; //I'm not sure where you're getting this value so I set it.

for (var i = 0; i <= timeTempCount; i++)

以上是关于如何在Javascript中检查空值?的主要内容,如果未能解决你的问题,请参考以下文章

空值从 javascript 传递给控制器

JavaScript单行代码,也就是代码片段

如何检查 var 的空值?

几个有用的JavaScript/jQuery代码片段(转)

如何在颤振发布方法中修复“未处理的异常:用于空值的空检查运算符”

10个JavaScript代码片段,使你更加容易前端开发。