> Pokud v tagu SCRIPT nedefinujes LANGUAGE="JavaScript1.2", pak > samotna numericka hodnota definuje delku pole. Tolik aspon > rika dokumentace. Ted jsem to zkousel v IE 6 a presto to > nefunguje. Mozilla spravne vraci delku pole 1. Bez toho > parametru taky vraci hodnotu 5. Tohle funguje bez problemu: > > pole = new Array(); > pole[0] = 5; > alert(pole.length); > Hele, to s tim 'language="JavaScript1.2"' se mi uplne nezda. Varianta 1 argument=delka pole, vice argumentu=vycet hodnot podle dokumentace plati od JavaScriptu 1.1 (JS 1.0 pole jeste neznal - ale to je NN 2.0) Jo, jasne, uz vim :) Sorry, mel jsi pravdu - v NN i Moz. to tak je - ovsem jestli to je "spravne" o tom se da polemizovat. JavaScript 1.2 v Netscapu (NN 4.0 - 4.05) obsahoval totiz nekompatibilitu s ECMAScriptem v.1 - neodpovidal tedy plne specifikaci. Jednou z nekompatibilit bylo prave to chovani konstruktoru pole. Kdyz mu predas jeden argument (x), vytvori nove pole o delce 1 s prvkem o hodnote x. Verze JavaScript 1.3 (NN 4.06 - 4.8) uz ma tyto nekompatibility opraveny. Tohle chovani se zachovalo i u vsech vyssich verzi Netscapu - pokud mu ovsem implicitne vnutite verzi Javascript1.2. To ale urcite nikdo z vas nedela (ze ne?), protoze napr. MSIE NEPOUZIVA Javascript 1.x, ale JScript x.x. Takze spolehat se na nekompatibilitu nema smysl. Vsichni si tedy vesele piseme 'script type="text/javascript"' a jsme vysmati jako leco. --- Pokud ale bylo zamerem vytvorit co nejjednoduseji pole s jednim prvkem naplnene nejakou hodnotou, pak se nabizi jeste uspornejsi zapis. Jazykove verze JavaScript 1.2 (NN 4+) a JScript 3.0 (MSIE 4+) implementuji totiz i literalovou syntaxi poli. Co to pro nas znamena? Ze vytvorit i inicializovat pole lze jednim jednoduchym prikazem: var pole=[5, 6, 7, 8]; --> pole se ctyrmi prvky var pole=[5]; --> pole s jednim prvkem, hodnota 5. Martin
This archive was generated by hypermail 2.1.3 : 12. 11. 2003, 16:33 CET