Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   добавить элемент в объект. defineProperty (https://javascript.ru/forum/misc/45972-dobavit-ehlement-v-obekt-defineproperty.html)

mrmammoth 23.03.2014 01:31

Цитата:

Сообщение от Poznakomlus (Сообщение 303854)
mrmammoth,
передавай элемент на сервер и там добавляй
не зачем впустую гонять ненужные данные

полностью код не приводил. $str передаётся через текстовое поле hidden.
дело в том, что пользователь может сделать несколько разных действий как то добавить, удалить, изменить в том числе и массив верхнего уровня. все его действия будут в $str и затем одним Submit передастся на сервер. можно и по одному элементу, но тогда пользователю придётся нажимать submit после каждого своего действия. действий может быть много. это время.

Vlasenko Fedor 23.03.2014 01:45

/* даёт ошибку элемент не поддерживает push*/
arr[i]['param3'].push({
arr[i]['param3'] = [];
arr[i]['param3'].push({
...

рони 23.03.2014 01:53

mrmammoth,
function doAdd(str) {
           var arr = JSON.parse(str);
            !arr['param3'] && (arr['param3'] = [])

                    arr['param3'].push({
                        subparam1: 'vol1',
                        subparam2: 'vol2'
                    });

            return JSON.stringify(arr);
}
alert(doAdd('{"param1":"value1","param2":"value2"}'))

mrmammoth 23.03.2014 13:00

Poznakomlus,
рони,
работает и так и так, но если в param3 уже были какие-то элементы - они замещаются новыми, а хотелось бы добавить.

рони 23.03.2014 13:10

mrmammoth,
так укажите куда добавить то и добавте -- нарисуйте без php что было и чего хотите достичь чтоб мы вас поняли

mrmammoth 23.03.2014 13:45

имеем на входе:
[{"param1":"volume1","param2":"volume2","param3" :[{"subparam1":"vol1","subparam2":"vol2"}]}]
надо после 1-й отработки скрипта:
[{"param1":"volume1","param2":"volume2","param3" :[{"subparam1":"vol1","subparam2":"vol2"},{"subparam 1":"vol1","subparam2":"vol2"}]}]
после 2-й
[{"param1":"volume1","param2":"volume2","param3" :[{"subparam1":"vol1","subparam2":"vol2"},{"subparam 1":"vol1","subparam2":"vol2"},{"subparam1":"vol1", "subparam2":"vol2"}]}]

и т.д.

Vlasenko Fedor 23.03.2014 14:03

arr[i]['param3'] = arr[i]['param3'] || [];

или опять не понял

рони 23.03.2014 14:06

mrmammoth,
<script>
    var arr = [{"param1":"volume1","param2":"volume2"}]

   function doAdd(params) {

            !arr[0]['param3'] && (arr[0]['param3'] = [])

                    arr[0]['param3'].push(params);

            return JSON.stringify(arr);
}
document.write(doAdd({"param1":"value1","param2":"value2"})+"<br>")
document.write(doAdd({"param1":"value1","param2":"value2"})+"<br>")
document.write(doAdd({"param1":"value1","param2":"value2"})+"<br>")
</script>

mrmammoth 23.03.2014 16:21

рони,
Poznakomlus,
Спасибо за помощь, всё функционирует!


Часовой пояс GMT +3, время: 14:10.