如何在Javascript中检查空值?
我正在研究一种检索表单中隐藏输入数组的方法,如下所示如何在Javascript中检查空值?,javascript,html,null,Javascript,Html,Null,我正在研究一种检索表单中隐藏输入数组的方法,如下所示 <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:
<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)分别检索这些
(i;i<计数器[0]。值;i++)的
{
//通过使用基名称加计数器的串联查找隐藏元素
var timetemp=document.getElementsByName('timetemp'+i);
//如果有一个对用户有价值的价值警报-这只是为了目前的测试目的
//因为只有一个timetemp.i,所以它在数组中占据位置0
if(timetemp[0]。值==null)
{
警报(“无值”);
}
其他的
{
警报(timetemp[0]。值);
}
}
因此,应该发生的是,它会提醒用户该隐藏输入中的值,但如果它遇到的输入没有这样的值:
<input type="hidden" value="" name="timetemp16">
然后它会说“没有价值”
但是,th if函数似乎无法处理此问题:
我试过:
(timetemp[0]。值==null)
(timetemp[0]。值===null)
(timetemp[0]。值==未定义)
(timetemp[0]。值=“”)
有什么想法吗?首先,我会检查
I
初始化到什么,看看getElementsByName
返回的元素是否与您认为的相同。可能通过使用硬编码名称(如timetemp0
)来解决问题,而不使用串联。您还可以通过浏览器调试器(,)运行代码
此外,对于您的if条件,这应该足够:
if (!timetemp[0].value) {
// The value is empty.
}
else {
// The value is not empty.
}
Javascript中的空字符串是一个错误的值,因此对该值的逻辑求反将使您进入if块。您的脚本在几个地方似乎不正确 试试这个
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);
}
}
var timetemp=document.getElementsByTagName('input');
对于(变量i=0;i
例如:
以下是我所改变的:
标记名
获取所有输入
s。这将生成一个数组var
初始化i
,然后使用timetemp.length
属性在timetemp
数组中循环timetemp[i]
引用for语句中的每个输入
for循环中的计数器似乎不正确(或者我们缺少一些代码) 此代码:
//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++)
//计数器[0]在哪里初始化?
对于(i;i<计数器[0]。值;i++)
应替换为:
//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++)
var timeTempCount=5//我不确定你从哪里得到这个值,所以我设置了它。
对于(var i=0;i注释作为答案:
if (timetime[0].value)
这是因为JS中的任何变量都可以作为布尔值进行计算,因此这通常会捕获空的、null的或未定义的内容。在我看来,使用“if(value)”来判断值是否为空值并不严格,因为当v的值为0(0不是空值)时,“v?true:false”的结果为假。您可以使用此功能:
const isEmptyValue = (value) => {
if (value === '' || value === null || value === undefined) {
return true
} else {
return false
}
}
只需尝试if(timetime[0].value)
mayhelp@RichardD你的解决方案非常有效!我希望我能给你分数,你能回答我的问题吗?也许我会接受你的答案?很奇怪,当你这样做时,你的代码不起作用。。value=''
,只是用一个固定的数字替换了计数器。它工作得很好。你错了,我为什么要找到我想要的所有答案nputs,我的表单中有50多个输入,我只想找到timetemp0,timetemp1,timetemp2-这不适合这个!足够公平@sqlmole。但不需要大喊大叫。我只是想帮你。我是根据你的问题回答的,没有提到其他输入。对于其他元素/属性,.length
错误为null。I最后修改成这样:return(${jsElement}&${jsElement}.length>0)
您如何知道OP需要为XHTML进行验证?
不是绝对的要求。我使用HTML5,但感谢您提供了代码示例,以防将来使用XTHML 1.1