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);

エラーが発生します:

キャッチされていない TypeError: 未定義のプロパティ 'content' を設定できません

ご覧のとおり、個々のマーカーの関連情報を JavaScript オブジェクトにカプセル化しようとしています。popups[index].markerまたは などを使用して、必要なものすべてにアクセスすることを目指していますpopups[index].content

私は本 Javascript: The Good Parts を読んでいますが、言及している部分が 1 つあります。

オブジェクトにそのプロパティ名がまだない場合、オブジェクトは拡張されます。

ここで何が欠けていますか?

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 に答える