开发者问题收集

遇到 javascript null 问题

2010-04-22
284

我尝试过纠正下面的代码。但我找不到解决方案。执行代码后,firebug 说“document.getElementById(haystack.value) 为 null”。我尝试了 if(document.getElementById(haystack).value ==null) ,但毫无用处。请帮帮我。

     var haystack=document.getElementById('city1').value;
 if(!document.getElementById(haystack).value)
 {
   alert("null");
 }
 else
 {
   alert("not null");
 }

编辑:

haystack 获取城市的值。当我尝试在 haystack 上使用“alert”-alert(haystack) 时,我得到了肯定的答复。但是当我尝试使用“document.getElementById(haystack).value”时,我得到了错误。不过有一点,haystack 获取的 id 元素可能存在也可能不存在。

再次编辑:

我想我会自杀。我将城市作为输入元素的名称属性,而不是 id 属性。很抱歉,在电脑前坐了这么久让我失去了理智。但这不是浪费你时间的借口。请接受我诚挚的歉意。感谢spender 的帮助。

3个回答

您尝试在 document.getElementById('city1') 上查找可能为空的属性。请尝试以下方法:

var haystackElement=document.getElementById('city1');
if(!haystackElement)
{
    alert("haystackElement is null");
}
else
{
    alert("haystackElement is not null");
    var haystack=haystackElement.value;
    if(!haystack)
    {
        alert("haystack is null");
    }
    else
    {
        alert("haystack is not null");
    }

}
spender
2010-04-22

您已经拥有 haystack 对象:

var haystack=document.getElementById('city1');
if(!haystack.value)
{
  alert("null");
}
else
{
  alert("not null");
}

document.getElementById 用于获取元素,您已完成此操作并将其放置在 haystack 变量中。无需再次调用 document.getElementById (并且这样做是错误的)。阅读有关 getElementById 的信息。

Oded
2010-04-22

遗憾的是,您向我们展示了一些代码并描述了一个错误(看起来像是被错误地转录了),而没有告诉我们您实际上想要实现什么。

请查看此代码示例,它修复了代码的稳健性问题,并且包含更详细的警报消息,以清楚地说明检测到的内容。

希望它能为您解决问题。

var haystack = document.getElementById('city1').value;
var haystack_element = document.getElementById(haystack);
if (haystack_element) {
    if (haystack_element.value) {
        alert("The element has a true value");
    } else {
        alert("The element has a false value, such as '' or 0");
} else {
    alert("No element with that name");
}
Quentin
2010-04-22