【问题标题】:JSON - Uncaught TypeError: Cannot read property of undefinedJSON - 未捕获的类型错误:无法读取未定义的属性
【发布时间】:2014-08-02 01:11:05
【问题描述】:

我想获取一些 JSON 值并从中生成变量,但是当我这样做时出现错误。 在第一阶段 JSON 数组为空,这就是我使用 if != null 的原因,但即使使用填充数组我也会收到错误。

var tempJS=[];  
$("#sth td").each(function(){
    $this = $(this);
    tempJS.push({"COLOR":$this.attr("data-color"),});
});
console.log(JSON.stringify(tempJS));

if(tempJS!=null) var kolor=tempJS[c-1].COLOR;

为什么最后一行给我以下错误:

未捕获的类型错误:无法读取未定义的属性“颜色”

【问题讨论】:

  • 错误非常明确,未定义的是 tempJS[c-1],代码上的“c”在哪里?,除了你检查 tempJS 不为空,它分配 tempJS[ c-1],你应该检查同样的事情

标签: javascript json


【解决方案1】:

如果您在控制台上尝试:

[]==null
> false

您会看到返回 false。这意味着,如果您检查数组是否等于 null,您将始终得到错误,并且始终运行 if 语句中的代码。

你应该这样做:

if(tempJS.length) var kolor=tempJS[c-1].COLOR;

您不需要if(tempJS.length > 0),因为每个数字都被视为true,除了0 表示false

【讨论】:

  • 我完全在 JSON 值中搜索错误...而且它是数组空/空错误。谢谢:)
【解决方案2】:

零长度数组与 null 不同。尝试测试if (tempJS.length > 0) ...

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 2015-01-06
    • 2017-07-26
    • 2019-02-26
    • 2021-12-25
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多