如果是“未定义”,请执行此操作,否则,使用数组和.each()执行此操作

时间:2014-01-26 21:35:27

标签: javascript jquery arrays image

我实际上已经没有想法了。我可能在这里有邋code的代码,但是它有效,直到它缺少一个返回undefined的数组。我尝试了以下内容:

if( typeof myVar == "undefined"){}
if(myVar === "undefined"){}
if(myVar != undefined){}

- 基本上,大多数事情都是我的知识。

现在,我知道如何正常捕获未定义或空对象,但这令我感到沮丧。

当其中一个数组返回undefined时,它会说:

GET http://127.0.0.1:2368/undefined/ 404 (Not Found)

这是JS:

var postImage = $(".post-image");

var imageURL = 
    $('.post-image img').map(function () {
        return this.src;
    });

var i = 0;

for (var i = 0; i < imageURL.length; i++) {

    postImage.each(function () {
        $(this).append('<div class="fetch-image" style="background-image:url(' + imageURL[i++] + ')">');
        $(".post-image img").remove();
    });
}

所以问题是......

我希望能够使用后备/undefined/替换backgroundImage网址,以防首先没有设置图片。图像src仅在图像存在时(显然)收集,但如果没有图像可以获取src,我希望能够设置后备,替换缺少或undefined数组。

希望这是有道理的!

很多问候,

詹姆斯。

编辑:我在each()范围内外尝试了以下内容:

if (typeof imageURL === "undefined") {
    alert("something is undefined");
}

我必须在这里遗漏一些东西。

2 个答案:

答案 0 :(得分:3)

你尝试的所有事情都是错的......

if( typeof someVariable == "undefined")

答案 1 :(得分:1)

你的循环包括:

imageURL[i++] 

这将在每次迭代时将i的值递增两次。因此,即使最后一次迭代的索引超出了数组的范围,循环也会继续。

您的数组子索引应该只设置为iimageURL[i]),并将第三个for参数设置为i+=2。然后循环不应返回undefined值(因为i将始终在数组的范围内)。