gpt4 book ai didi

javascript - IE 7 不支持关联数组?

转载 作者:行者123 更新时间:2023-11-28 09:59:02 25 4
gpt4 key购买 nike

我在从关联数组检索数据时遇到问题。

需要明确的是,这就是我的代码:

var modelTable = {};

然后我将一些内容保存到对象中:

//inside getJSON-call:
$.each(data.Models, function (index, val) {
modelTable[val.Name] = val;
});

在本例中,val 只是一个 json 对象:

{
Models : [
{
Name: "4-stroke (EBE)",
ModelNumber: "VRE",
Engine: "125ccm"
}
]
}

但是当我尝试从我的 modelTable 中获取数据时,如下所示:

var model = modelTable["4-stroke (EBE)"];

根据 IE 的开发工具,该对象为 null 或未定义:

SCRIPT5007: Unable to get value of the property 'Name': object is null or undefined 

编辑:大代码片段:

它基本上是两个用于搜索的输入字段(使用 jQuery UI 自动完成;并不重要)。 第一个框用于选择摩托车品牌(品牌),然后在选择品牌并包含型号名称时填充第二个。第二个输入字段的值(javascript .text())用于查找modelTable中的所有特定数据,因为我需要这些数据以提交我的搜索表单。

$(function () {
if ($('#mc_search').length) {
init_mc_makes();
}
});

var modelTable = {};

function init_mc_makes() {
//populates the brand drop down list in jquery ui autocomplete
}

function init_mc_models() {
//populates the model drop down list in jquery ui autocomplete
//and iterates the json data to save associative data in modelTable
//calls submitSearch(name, brand)
}

function submitSearch(name, brand) {
var model = modelTable[name];
var chosenModelNumber = model.ModelNumber; //Unable to get value of the property 'ModelNumber': object is null or undefined
//submits form with data...
}

最佳答案

如果您显示的代码是在 dom 就绪后执行的,则 $() 回调将同步执行。例如,此代码的输出:

$(function () { console.log(1); });
console.log(2);

取决于它是否在 DOM 准备好之前执行(它将首先输出 2,然后 - 当 DOM 最终准备好时 - 1)或准备好后(在这种情况下,它将输出 1,然后是 2)。

我怀疑您的代码仅在 DOM 准备就绪时执行(例如,它位于异步加载的文件中,或者本身包含在 $() 调用中)。这种情况是否发生可能确实取决于所使用的浏览器,因为脚本标记上的 defer 属性的可用性或 DOM 的构建速度实际上会影响这一点。但这只是猜测;如果没有更多背景,很难判断。

但是,如果这是正确的,则立即调用 init_mc_makes() ;特别是,它在赋值之前调用

modelTable = {}

已制作完成。由于变量提升,modelTable 此时已经存在,但它是未定义

如果这个理论是正确的,那么就移动

var modelTable = {};

上面$(...)调用应该可以解决这个问题。

关于javascript - IE 7 不支持关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9514639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com