Формирование двухмерного массива в javascript
Идея такая: нас странице есть список с чекбоксами. Каждый чекбокс имеет атрибуты title и value.
Надо пробежаться по чекбоксам и собрать массив данных, такого вида (привожу пример php, т.к. толком не знаю синтаксис js) array( 0=>array('title'=>'тайтл 1-го чекбокса', 'value'=>'содержимое 1-го чекбокса'), 1=>array('title'=>'тайтл 2-го чекбокса', 'value'=>'содержимое 2-го чекбокса'), 2=>array('title'=>'тайтл 3-го чекбокса', 'value'=>'содержимое 3-го чекбокса'), 3=>array('title'=>'тайтл 4-го чекбокса', 'value'=>'содержимое 4-го чекбокса'), ) Я делаю так: var allChecked = new Array(); for (var o = checkboxes, j = 0, l = o.length; j < l; j++) { if (o[j].checked == true) { cTitle = o[j].title; //alert(eTitle); cValue = o[j].value; //alert(eValue); acl = allChecked.length; allChecked[acl] = new Array({'checkbox-value':cValue, 'checkbox-title':cTitle}); }; }; alert(allChecked[0]); // выводит [object Object] Результат: [object Object]. Правильно ли я делаю? Может не так надо массив на экран выводить? Или неправильно код работает? Помогите, пожалуйста. |
Если я правильно понял то у тебя в одномерном массиве, ассоциативный.
В таком случает надо так. allChecked[acl] = {'checkbox-value':cValue, 'checkbox-title':cTitle}; Т.к. в JS нет ассоциативных массивов, из заменяют объекты. А алерт все правильно тебе выводит и будет выводить тоже самое после изменения. alert(allChecked[0]['checkbox-value']); так должен выводить значение |
спасибо большое. работает.
А как можно вывести на экран весь массив? |
goldserg,
в js вообще можно сказать нету массивов, массив это тот же объект. Neokortex, это как пример <input type="button" onclick="show()" value="нажми"> <input type="checkbox" title="t1"> <input type="checkbox" title="t2"> <input type="checkbox" title="t3"> <input type="checkbox" title="t4"> <input type="checkbox" title="t5"> <input type="checkbox" title="t6"> <input type="checkbox" title="t7"> <input type="checkbox" title="t8"> <input type="checkbox" title="t9"> <div id="out"></div> <script type="text/javascript"> function gc(inO){ var inputs = inO.getElementsByTagName("input"), newinputs = new Array(); for(var i in inputs) if(inputs[i].type == "checkbox") newinputs.push([inputs[i].checked, inputs[i].title]); return newinputs; } function show(){ result = gc(document.body), str=""; for(var i in result) str += i + " = " + result[i]; document.getElementById('out').innerHTML = str; } </script> |
либо по циклу перебором, либо подключить функцию, которая конвертит в JSON, либо firebug в FF - что удобнее всего и быстрее
|
Цитата:
|
goldserg,
Цитата:
JSON - это просто синтаксис для представления объекта в браузере компилятор его уже знает. {a:1, b:2, c:3} - это объект, а синтаксис JSON |
Цитата:
alert(typeof []) |
Да я и не спорю
alert(Object.prototype.toString.call([1,2]).match(/\w+(?=])/)[0]) А насчет JSON - так это чтобы алертом строку вывести, библиотека либо JSON.stringlify (IE8+, все остальные браузеры) позволяет это сделать, а затем вывести алертом например содержимое. |
но всё равно это сначала
alert(Object.prototype.toString.call([1,2]).match(/\w+/)) и так можно, но не во всех браузерах alert({a:1,b:2}.toSource()) |
Часовой пояс GMT +3, время: 06:31. |