2013-06-15 10 views
7

tworzę bardzo prosty obiekt w JavaScript i typami pętli thru jego właściwości, wyświetlając nazwę właściwości:Iteracja thru właściwości obiektów produkuje różne wyniki w różnych przeglądarkach

var name = { 
       'A': 'DataA', 
       'B': 'DataB', 
       'C': 'DataC', 
       'D': 'DataD', 
       'E': 'DataE' 
      } 

for (var propName in name) { 
    document.getElementById('result').innerHTML += propName + ' ' 
} 

W IE i FireFox produkuje oczekiwany wynik:

A B C D E 

Ale w Chrome sam kod produkuje

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 

jakiś pomysł czemu? Czy słowo kluczowe name ma jakieś znaczenie w Chrome?

+0

[Jesteś pewien?] (Http://jsfiddle.net/cqvrF/) – zerkms

+0

JSFiddle z jakiegoś powodu nie pokazuje efektu, ale kiedy otwieram stronę HTML z kodem bezpośrednio w przeglądarce - tak się stanie –

+3

Chrome doesn Wydaje się, że podoba mi się, gdy używasz go jako globalnego (istnieje właściwość name w obiekcie okna). Po prostu uruchom go wewnątrz funkcji. – zdyn

Odpowiedz

4

Chrome wydaje się nie lubi, kiedy go używać jako zmienną globalną (istnieje również nieruchomość na nazwę obiektu window). Po prostu uruchom go wewnątrz funkcji.

-5

spróbować

for (var propName in name) { 
    document.getElementById('result').innerHTML += (propName + ' '); 
} 
+2

Jak sądzisz, co by się zmieniło (dla * działającego * kodu)? Przed usunięciem odpowiedzi zajrzyj na stronę https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence :-) – zerkms

+0

Chodzi o to, że debuguję stronę 'propName 'nie pokazuje tych numerów –

+0

Nie zamierzam tego usuwać, ponieważ robi różnicę –

Powiązane problemy