Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.03.2011, 16:22
Аспирант
Отправить личное сообщение для Neokortex Посмотреть профиль Найти все сообщения от Neokortex
 
Регистрация: 29.01.2010
Сообщений: 39

Формирование двухмерного массива в 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]. Правильно ли я делаю? Может не так надо массив на экран выводить? Или неправильно код работает?

Помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 24.03.2011, 16:52
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

Если я правильно понял то у тебя в одномерном массиве, ассоциативный.
В таком случает надо так.
allChecked[acl] = {'checkbox-value':cValue, 'checkbox-title':cTitle};

Т.к. в JS нет ассоциативных массивов, из заменяют объекты.
А алерт все правильно тебе выводит и будет выводить тоже самое после изменения.
alert(allChecked[0]['checkbox-value']);

так должен выводить значение
Ответить с цитированием
  #3 (permalink)  
Старый 24.03.2011, 17:04
Аспирант
Отправить личное сообщение для Neokortex Посмотреть профиль Найти все сообщения от Neokortex
 
Регистрация: 29.01.2010
Сообщений: 39

спасибо большое. работает.
А как можно вывести на экран весь массив?
Ответить с цитированием
  #4 (permalink)  
Старый 24.03.2011, 17:23
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

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>
__________________
.

Последний раз редактировалось Skipp, 24.03.2011 в 17:27.
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2011, 17:26
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

либо по циклу перебором, либо подключить функцию, которая конвертит в JSON, либо firebug в FF - что удобнее всего и быстрее
Ответить с цитированием
  #6 (permalink)  
Старый 24.03.2011, 17:28
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

Сообщение от Skipp
в js вообще можно сказать нету массивов, массив это тот же объект.
Я в курсе. Но конструктор у него отличается.
Ответить с цитированием
  #7 (permalink)  
Старый 24.03.2011, 17:30
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

goldserg,
Цитата:
конвертит в JSON
это как?
JSON - это просто синтаксис для представления объекта
в браузере компилятор его уже знает.
{a:1, b:2, c:3} - это объект, а синтаксис JSON
__________________
.

Последний раз редактировалось Skipp, 24.03.2011 в 17:35.
Ответить с цитированием
  #8 (permalink)  
Старый 24.03.2011, 17:34
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Сообщение от goldserg
Но конструктор у него отличается.
ну конечно только он как был объектом так и остался
alert(typeof [])
__________________
.
Ответить с цитированием
  #9 (permalink)  
Старый 24.03.2011, 17:37
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

Да я и не спорю
alert(Object.prototype.toString.call([1,2]).match(/\w+(?=])/)[0])


А насчет JSON - так это чтобы алертом строку вывести, библиотека либо JSON.stringlify (IE8+, все остальные браузеры) позволяет это сделать, а затем вывести алертом например содержимое.

Последний раз редактировалось goldserg, 24.03.2011 в 17:40.
Ответить с цитированием
  #10 (permalink)  
Старый 24.03.2011, 17:51
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

но всё равно это сначала
alert(Object.prototype.toString.call([1,2]).match(/\w+/))


и так можно, но не во всех браузерах
alert({a:1,b:2}.toSource())
__________________
.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива из Php в Javascript kamushek Серверные языки и технологии 45 20.02.2012 11:11
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
передача массива из PHP в javascript simple Общие вопросы Javascript 3 03.10.2010 12:19
Помогите разобраться с повторением при генерации массива (Javascript) JsLoveR Javascript под браузер 4 16.12.2009 15:26