【问题标题】:If "Undefined", do this, else, do that with arrays and .each()如果“未定义”,则执行此操作,否则,使用数组和 .each() 执行此操作
【发布时间】:2014-02-17 14:59:14
【问题描述】:

我实际上已经没有想法了。我可能在这里有草率的代码,但它可以工作,直到它缺少一个返回 undefined 的数组。我尝试了以下方法:

if( typeof myVar == "undefined"){}
if(myVar === "undefined"){}
if(myVar != 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/ URL 替换为备用backgroundImage,以防一开始没有设置图像。图像src 仅在图像存在时才会收集(显然),但如果没有图像可以获取src,我希望能够设置一个后备,替换丢失的或@ 987654330@数组。

希望这是有道理的!

非常感谢,

詹姆斯。

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

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

我一定是错过了什么。

【问题讨论】:

标签: javascript jquery arrays image


【解决方案1】:

您的循环包括:

imageURL[i++] 

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

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

【讨论】:

  • 认为这是正确的答案,但这不是一个很好的问题。无论如何,+1 因为这至少闻起来很脏。
  • 虽然我在提交答案后不得不坐下来考虑一下。数组的边界仍然有效,因为他在索引中使用了后增量运算符。他的循环结构应该仍然有效(它只会跳过一些索引)。但我仍然倾向于修复循环和/或数组结构,而不是为undefined 提供创可贴。
  • 我仍然不知道他为什么要双倍递增。
  • 这只是一个问得不好的问题。不幸的是,可能不值得考虑太多。
  • 不幸的是,似乎最简单的问题在你的大脑中徘徊:)
【解决方案2】:

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

if( typeof someVariable == "undefined")

【讨论】:

  • 对不起,我会更新我的帖子。我已经尝试过了,错字错误!谢谢。
  • 这不是真的。他确实与undefined 进行了比较,这应该有效。 typeof 的唯一优势是,如果尚未定义变量,它不会引发错误。但我认为这是一个可疑的优势。
  • @lwburk 这在编辑之前不在问题中;)只有一个拼写错误的typeOf 和两个与字符串"undefined" 的不同比较。
  • @NiettheDarkAbsol - 啊,明白了:)
猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 2013-01-19
  • 2021-10-27
  • 2023-03-09
  • 1970-01-01
  • 2016-05-17
  • 2011-06-17
  • 1970-01-01
相关资源
最近更新 更多