我正在研究一种在我的表单中检索隐藏输入数组的方法,如此
<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">
然后它会说“没有价值”
然而,如果函数似乎不能用于此:
我试过了:
(timetemp[0].value == null)
(timetemp[0].value === null)
(timetemp[0].value == undefined)
(timetemp[0].value == '')
似乎总是默认为else子句。
有什么想法吗?
答案 0 :(得分:38)
评论作为答案:
if (timetime[0].value)
这是有效的,因为JS中的任何变量都可以作为布尔值进行求值,因此这通常会捕获空,空或未定义的内容。
答案 1 :(得分:3)
首先,我会检查i
被初始化的内容,以查看getElementsByName
返回的元素是否符合您的想法。也许通过使用像timetemp0
这样的硬编码名称来尝试解决问题,而不需要连接。您还可以通过浏览器调试器(FireBug,Chrome Dev Tools,IE Dev Tools)运行代码。
另外,对于你的if条件,这应该足够了:
if (!timetemp[0].value) {
// The value is empty.
}
else {
// The value is not empty.
}
Javascript中的空字符串是一个假值,因此逻辑否定将使您进入if块。
答案 2 :(得分:3)
在我看来,使用&#34; if(value)&#34;判断一个值是否为空值不严格,因为&#34; v?的结果为:false&#34;当v的值为0(0不是空值)时为false。您可以使用此功能:
const isEmptyValue = (value) => {
if (value === '' || value === null || value === undefined) {
return true
} else {
return false
}
}
答案 3 :(得分:1)
您的脚本在某些地方似乎不正确。
试试这个
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/
以下是我改变的内容:
input
获取所有TagName
。这就是一个数组i
初始化var
,然后使用timetemp
属性循环遍历timetemp.length
数组。timetemp[i]
引用input
for statement
醇>
答案 4 :(得分:0)
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++)