无法获取JavaScript来检查null对象

时间:2012-06-05 22:36:50

标签: javascript

我真的不知道这里的问题是什么。据我所知,代码很简单,应该可以正常工作。

          var Prices="";
          for (var PriceCount = 1; PriceCount <= 120; PriceCount++) {
              var CurrentPrice = "Price" + PriceCount;
              if (prevDoc.getElementById(CurrentPrice).value != null) {
                  if (Prices == "") {
                      Prices = prevDoc.getElementById(CurrentPrice).value;
                  } else {
                      Prices += "," + prevDoc.getElementById(CurrentPrice).value;
                  }
              } else {
                  break;
              }
          }

表单上最多可以有120个隐藏输入。当我们检查不存在的输入时,循环应该中断。我的测试页面有两个被拉动的输入元素。在第三个(null)我在firebug中得到这个错误:

prevDoc.getElementById(CurrentPrice) is null

 if (prevDoc.getElementById(CurrentPrice).value != null) {

是的,它是空的...那是对ಠ_ಠ

的检查

有人知道我做错了什么吗?这似乎应该是非常直接的。

编辑: 为了清楚起见,prevDoc = window.opener.document

4 个答案:

答案 0 :(得分:5)

if (prevDoc.getElementById(CurrentPrice).value != null) {

可以扩展为:

var element = prevDoc.getElementById(CurrentPrice);    
var value = element.value; /* element is null, but you're accessing .value */

if (value != null) { 

答案 1 :(得分:1)

值永远不会为空。

如果未填写,则值为“”或长度为零。

如果元素不存在,则检查是否存在元素。

var CurrentPrice = "Price" + PriceCount;
var elem = prevDoc.getElementById(CurrentPrice);
if (elem && elem.value != null) {

答案 2 :(得分:0)

尝试

if (prevDoc.getElementById(CurrentPrice) !== null)

答案 3 :(得分:0)

我认为应该是:

var Prices="";
for (var PriceCount = 1; PriceCount <= 120; PriceCount++) {
    var CurrentPriceId = "Price" + PriceCount,
        CurrentPrice = prevDoc.getElementById(CurrentPriceId);

    if (CurrentPrice != null) {
        Prices = (Prices == "") ? CurrentPrice.value : (Prices + "," + CurrentPrice.value);
    }
    else break;
}