0

我有一个 foreach 循环(使用 MVC3 的 Razor 引擎编写),每次迭代都需要在 Popups 数组中创建一个新对象。这是我要运行的内容:

var popups = [];
var count = 0;

@foreach (var marker in Model) {
    <text>
    popups[count]["content"] = document.createElement("div");
    popups[count]["content"].class = "infobox-custom";
    popups[count]["content"].style.cssText = "padding: 5px; width: 600px;";
    popups[count]["content"].innerHTML = '<div class="professional"><h1>test</h1></div>';

    popups[count]["infobox"] = new InfoBox();

    popups[count]["marker"] = new MarkerInfo();
    count++;
    </text>
}
console.log(popups);

我收到错误:

未捕获的类型错误:无法设置未定义的属性“内容”

如您所见,我试图将每个标记的相关信息封装在一个 javascript 对象中。我的目标是使用类似popups[index].markeror的东西来访问我需要的一切popups[index].content

我正在阅读 Javascript: The Good Parts 这本书,其中有一部分提到:

如果对象还没有该属性名称,则对该对象进行扩充:

我在这里想念什么?

4

2 回答 2

2

popups[count]在开始向其添加属性之前设置为对象。

var popups = [];
var count = 0;

@foreach (var marker in Model) {
    <text>
    popups[count] = {};
    popups[count]["content"] = document.createElement("div");
    popups[count]["content"].class = "infobox-custom";
    popups[count]["content"].style.cssText = "padding: 5px; width: 600px;";
    popups[count]["content"].innerHTML = '<div class="professional"><h1>test</h1></div>';

    popups[count]["infobox"] = new InfoBox();

    popups[count]["marker"] = new MarkerInfo();
    count++;
    </text>
}
console.log(popups);
于 2012-11-26T02:45:38.190 回答
1

您需要创建popups一个对象数组。

popups[count] = {}; // <<<<<<<<<<<<<<<<-----------------------------------
popups[count]["content"] = document.createElement("div");
popups[count]["content"].class = "infobox-custom";
popups[count]["content"].style.cssText = "padding: 5px; width: 600px;";
popups[count]["content"].innerHTML = '<div class="professional"><h1>test</h1></div>';
于 2012-11-26T02:43:35.303 回答