0

下面是我用来获取已知类或 id 图像的 href 或 src 的部分代码。console.log() 返回 null,即使它在 if 语句中检查稍后使用的属性不为 null。当然,尝试获取 null 的 href 或 src 的结果并不好。

for(var i = 0 ; (i < sitelist[site].img_id.length) && (img === undefined) ; i++)
{
    if(document.getElementById(sitelist[site].img_id[i]) !== undefined)
    {
        if(document.getElementById(sitelist[site].img_id[i]) !== null)
        {
            console.log(document.getElementById(sitelist[site].img_class[i]));
            if(document.getElementById(sitelist[site].img_class[i]).href !== undefined)
            {
                img =   document.getElementById(sitelist[site].img_class[i]).href;
            }
            if(document.getElementById(sitelist[site].img_class[i]).src !== undefined)
            {
                img =   document.getElementById(sitelist[site].img_class[i]).src;
            }
        }
    }
}

是否有特定的方法来检查某些内容是否为空,或者其他地方是否存在问题?

4

4 回答 4

2

你可以试试下面的代码。

代替

if (document.getElementById(sitelist[site].img_id[i]) !== undefined) {
    if (document.getElementById(sitelist[site].img_id[i]) !== null) {
        // ...
    }
}

if (document.getElementById(sitelist[site].img_id[i])) {
    // process here
}

您正在下一条语句中连续检查 null 和 undefined 。您只能尝试使用元素。

于 2013-05-22T12:43:06.780 回答
1

代替

   id[i]) !== undefined

   id[i]) != undefined 

在所有陈述中

于 2013-05-22T12:39:21.053 回答
1

要测试是否找到元素,只需使用

var elem = document.getElementById(sitelist[site].img_id[i]);
if (elem) {
   // proceed from there

请注意,我还声明了一个变量。重复你document.getElementById(sitelist[site].img_id[i])的代码会使你的代码难以阅读(因此难以调试和维护)。

于 2013-05-22T12:41:58.133 回答
0

您的nullundefined测试是正确的,尽管比需要的时间长。

您的实际问题是您正在测试.img_id[i],然后使用.img_class[i].

这是现有代码的更简洁版本。

for(var i = 0 ; (i < sitelist[site].img_id.length) && (img === undefined) ; i++) { 

// Here you're testing the `img_id[i]`
    var img_id = document.getElementById(sitelist[site].img_id[i]);

    if(img_id != null) {

// Here you're trying to use a different element
        var img_clss = document.getElementById(sitelist[site].img_class[i]);
        console.log(img_clss);

        if(img_clss.href !== undefined) {
            img =   img_clss.href;
        }
        if(img_clss.src !== undefined) {
            img = img_clss.src;
        }
    }
}

除非值相同,否则测试一个值不会告诉您是否存在不同的值。

我不知道意图是什么,但也许您只需要更改if.

for(var i = 0 ; (i < sitelist[site].img_id.length) && (img === undefined) ; i++) { 
    // Here you're testing the `img_id[i]`
    var img_id = document.getElementById(sitelist[site].img_id[i]);

    if(img_id != null) {
        // Now we're using the same element that we tested!
        console.log(img_id);

        if(img_id.href !== undefined) {
            img = img_id.href;
        }
        if(img_id.src !== undefined) {
            img = img_id.src;
        }
    }
}
于 2013-05-22T13:00:08.417 回答