2

私は以下のJSを持っています。

  • オブジェクトの配列。「s」および「e」プロパティを持つ各オブジェクト。
  • 最初の for ループは、配列の最初の項目の "s" および "e" プロパティをログに記録するためのテストです。
  • 2 番目のループは、作業コードを実行したい場所ですが、このループ内からプロパティにアクセスできません。そして、これはIE8以下でのみ発生しているようです。

私が得ているIE8のエラーは次のとおりです。

's' は null であるか、オブジェクトではありません

任意のアイデアをいただければ幸いです?

var t = [
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
];

var obj = t[0];
for (var prop in obj) {
    console.log(prop+": "+obj[prop]);
}

for (var i = t.length - 1; i >= 0; i--) {
    var l = t[i];
    var s = l.s;
    console.log(s);
}
4

3 に答える 3

2

t 配列の最後のオブジェクトの後にコンマがあります。ループ内の最初のオブジェクトとして undefined を取得しているため、削除してください。IE8 では、最初はエラーをスローしませんが、空のオブジェクトを取得するためです。これが、エラーが発生する理由です。

あなたのコード:

var t = [
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    undefined // How IE8 parses it and your loop starts here
];

これはエラーをスローしません:

var t = [
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"} // No comma so array is terminated here
];
于 2012-09-27T06:03:51.380 に答える
2

配列の最後の要素が null です。配列の最後の「、」を削除してみてください

var t = [
{s: "blah", e: "blah blah"},
{s: "blah", e: "blah blah"},
{s: "blah", e: "blah blah"},
{s: "blah", e: "blah blah"}
];
于 2012-09-27T06:04:38.967 に答える
1

よくある間違い:

var t = [
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},  // remove the comma
];

var t = [
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"},
    {s: "blah", e: "blah blah"}  
];

今はIE8でうまく動作します...私はそれをテストしました:http://jsfiddle.net/SnakeEyes/qFgjh/

于 2012-09-27T06:06:21.600 に答える