- как передать именнованный массив, lx, 20:07 , 20-Мрт-06 (1)
><script language="JavaScript"> >var t = {4: "test1", > "key2": "350", > 10: "test3"}; ></script> ><form name=frm...> ><input type=hidden name="t[]"> >... ></form> >--------------------------- >надо передать "t[]" = значение массива t. Как?! >document.frm.t.value = t; // не проходит >document.frm.t[].value = t; // ошибка >как это делается в JS? Читать про массивы. Такой конструкции для массивов в яваскрипт нет. Как-то так: document.forms["frm"].t.value = t[0];
- как передать именнованный массив, konst, 20:14 , 20-Мрт-06 (2)
>><script language="JavaScript"> >>var t = {4: "test1", >> "key2": "350", >> 10: "test3"}; >></script> >><form name=frm...> >><input type=hidden name="t[]"> >>... >></form> >>--------------------------- >>надо передать "t[]" = значение массива t. Как?! >>document.frm.t.value = t; // не проходит >>document.frm.t[].value = t; // ошибка >>как это делается в JS? > >Читать про массивы. Такой конструкции для массивов в яваскрипт нет. какой конструкции нет? >Как-то так: >document.forms["frm"].t.value = t[0]; передать массив я могу http://...cgi?t=1&t=2&t=3 а как его собрать в name=t[] в js?
- как передать именнованный массив, lx, 20:19 , 20-Мрт-06 (3)
>>><script language="JavaScript"> >>>var t = {4: "test1", >>> "key2": "350", >>> 10: "test3"}; >>></script> >>><form name=frm...> >>><input type=hidden name="t[]"> >>>... >>></form> >>>--------------------------- >>>надо передать "t[]" = значение массива t. Как?! >>>document.frm.t.value = t; // не проходит >>>document.frm.t[].value = t; // ошибка >>>как это делается в JS? >> >>Читать про массивы. Такой конструкции для массивов в яваскрипт нет. >какой конструкции нет? >>Как-то так: >>document.forms["frm"].t.value = t[0]; >передать массив я могу http://...cgi?t=1&t=2&t=3 >а как его собрать в name=t[] в js? м-да, как все запущенно.
- только как строку, XAnder, 09:03 , 21-Мрт-06 (5)
>надо передать "t[]" = значение массива t. Как?! >document.frm.t.value = t; // не проходит >document.frm.t[].value = t; // ошибка >как это делается в JS? Ошибка возникает потому, что значением (value) элемента формы может быть только строка, но не массив. Следовательно, перед присваиванием нужно сделать из массива строку. Этого можно достичь разными способами в зависимости от сложности исходного массива. Общее решение - реализовать на JS аналог PHP'шных функций serialize/unserialize. Наверняка где-нибудь в инете есть готовые решения этой задачи.
- только как строку, konst, 13:27 , 21-Мрт-06 (6)
>>надо передать "t[]" = значение массива t. Как?! >>document.frm.t.value = t; // не проходит >>document.frm.t[].value = t; // ошибка >>как это делается в JS? > >Ошибка возникает потому, что значением (value) элемента формы может быть только строка, >но не массив. Следовательно, перед присваиванием нужно сделать из массива строку. >Этого можно достичь разными способами в зависимости от сложности исходного массива. >Общее решение - реализовать на JS аналог PHP'шных функций serialize/unserialize. Наверняка >где-нибудь в инете есть готовые решения этой задачи.а почему так не проходит?: document.frm.t[0].value = t[0];
- дык, не должно так проходить, XAnder, 16:32 , 21-Мрт-06 (7)
>а почему так не проходит?: >document.frm.t[0].value = t[0]; Потому что у элемента "t" нет свойства "0". Да и вообще элемента с именем "t" нет. Если же вернуться к исходному примеру, то это вот совсем неправильно: document.frm.t.value = t; а вместо такого: document.frm.t[].value = t; корректно писать так: document.frm["t[]"].value = t; Это сработает без ошибок, но результат будет немного не тот - свойству value будет присвоено значение "[object Object]" (это в FF). А всё потому, что t - это массив, а ожидается строка, вот JS и перегоняет его в строку, как умеет, а умеет плохо :)
- дык, не должно так проходить, konst, 18:16 , 21-Мрт-06 (8)
>>а почему так не проходит?: >>document.frm.t[0].value = t[0]; > >Потому что у элемента "t" нет свойства "0". Да и вообще элемента >Это сработает без ошибок, но результат будет немного не тот - свойству >value будет присвоено значение "[object Object]" (это в FF). А всё >потому, что t - это массив, а ожидается строка, вот JS >и перегоняет его в строку, как умеет, а умеет плохо :) > а хоть как-то возможно присвоить хоть какое-то значение для t[] (на js)? <input type=hydden name="t[]"> или просто нельзя использовать name=t[], если хочешь использовать js для ее заполнения?
- можно, но есть ньюансы, XAnder, 08:47 , 22-Мрт-06 (9)
>а хоть как-то возможно присвоить хоть какое-то значение для t[] (на js)? > ><input type=hydden name="t[]"> >или просто нельзя использовать name=t[], если хочешь использовать js для ее заполнения? Можно, так, например: document.frm["t[]"].value = "какая-нибудь строка"; Эта конструкция прокатит на ура. Если ты знаком с синтаксисом JS, то должен знать, что такие вот две записи: foo.bar foo["bar"] в общем-то эквивалентны и обозначают одно и то же. Разница только в границах их применимости - если вторая может применяться для элементов с какими угодно именами, то первая - только для элементов, чьи имена являются правильными идентификаторами. foo["qq"], foo["t[]"] и foo["-*-"] - правильно foo.qq - правильно, foo.t[] - синтаксически верно, но обозначает не то foo.-*- - неправильно
- можно, но есть ньюансы, konst, 14:14 , 22-Мрт-06 (10)
>>а хоть как-то возможно присвоить хоть какое-то значение для t[] (на js)? >> >><input type=hydden name="t[]"> >>или просто нельзя использовать name=t[], если хочешь использовать js для ее заполнения? > >Можно, так, например: > >document.frm["t[]"].value = "какая-нибудь строка"; > >Эта конструкция прокатит на ура. Если ты знаком с синтаксисом JS, то >должен знать, что такие вот две записи: > > foo.bar > foo["bar"] > >в общем-то эквивалентны и обозначают одно и то же. Разница только в >границах их применимости - если вторая может применяться для элементов с >какими угодно именами, то первая - только для элементов, чьи имена >являются правильными идентификаторами. > >foo["qq"], foo["t[]"] и foo["-*-"] - правильно > >foo.qq - правильно, >foo.t[] - синтаксически верно, но обозначает не то >foo.-*- - неправильно Спасибо. Как я понял, работать с массивами норамьно в js не получится. Надо будет работать со строками...
|