Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.10.2016, 15:12
Интересующийся
Отправить личное сообщение для Navka1 Посмотреть профиль Найти все сообщения от Navka1
 
Регистрация: 21.10.2016
Сообщений: 12

Сообщение от ksa Посмотреть сообщение
Navka1, начнем с того, что в тег <a> не стоит "вставлять" теги <li>...

Для анализа циклов бывает достаточно просто выводить то, с чем имеешь дело в самом цикле. Обычно это многое проясняет...
Спасибо за ответы!
О теге <a> учту, но console.log(list['list'][key1]["ima"]) показывает так же 3 строки...
Ответить с цитированием
  #12 (permalink)  
Старый 21.10.2016, 15:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от Navka1
но console.log(list['list'][key1]["ima"]) показывает так же 3 строки...
И что с того?
Цикл-то у тебя идет не по
list['list'][key1]["ima"]

а по
Сообщение от Navka1
for (var key2 in list['list'][key1]) {...}
Т.е. по
list['list'][key1][key2]
Ответить с цитированием
  #13 (permalink)  
Старый 21.10.2016, 15:22
Интересующийся
Отправить личное сообщение для Navka1 Посмотреть профиль Найти все сообщения от Navka1
 
Регистрация: 21.10.2016
Сообщений: 12

Сообщение от ksa Посмотреть сообщение
И что с того?
Цикл-то у тебя идет не по
list['list'][key1]["ima"]

а по

Т.е. по
list['list'][key1][key2]
Как я понимаю, необходимо сделать еще один вложенный цикл, уже по ключу list['list']["ima"][key3]?
Ответить с цитированием
  #14 (permalink)  
Старый 21.10.2016, 15:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от Navka1
Как я понимаю, необходимо сделать еще один вложенный цикл, уже по ключу list['list']["ima"][key3]?
Может и так... Я просто пока не понял нужные ТСу и тебе подробности...

Т.к. лучший вариант это сделать тестовый пример на котором можно что-то показать...
А у вас просто куски какого-то не работающего кода.
Ответить с цитированием
  #15 (permalink)  
Старый 21.10.2016, 15:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от Navka1
Как я понимаю, необходимо сделать еще один вложенный цикл, уже по ключу list['list']["ima"][key3]?
Только тогда не понятно зачем вам там цикл по key2...
Ответить с цитированием
  #16 (permalink)  
Старый 21.10.2016, 15:28
Интересующийся
Отправить личное сообщение для Navka1 Посмотреть профиль Найти все сообщения от Navka1
 
Регистрация: 21.10.2016
Сообщений: 12

Есть запрос к БД:

$qr_result = mysql_query("select ket.district.id, ket.district.ima, count(marker.district) from district
							left join ket.marker on ket.marker.district = ket.district.ima  
							group by district ORDER BY id;");
$qr_result2 = mysql_query("SELECT count(*) FROM `marker`;")
or die(mysql_error());

$list = array();
//$alllist = array();
while($r = mysql_fetch_assoc($qr_result)) 
{
	$list['list'][] = $r; 

};
while($d = mysql_fetch_assoc($qr_result2)) 
{
	$list['allLIST'][] = $d;		
};
echo json_encode($list); 
//echo json_encode($alllist); 
?>


Ответ приходит в следующем виде:
{"list":[{"id":"1","ima":"...","count(marker.district)":"1" },
..........,
"allLIST":[{"count(*)":"6"}]}

В аяксе хочу выводить только значения ima и count(marker.district), но выводится все это добро сразу три раза...
При этом, при выводе ключа "allLIST":[{"count(*)":"6"}]} - все происходит нормально в этом куске кода:
for (var key1 in list['allLIST'])
				{	
					html+='<a class = "link" onclick="event.preventDefault()">';     
					for (var key2 in list['allLIST'][key1]) {
						html+='<li class = "big" onclick="alldistrict()")>Все районы &nbsp\(' + list['allLIST'][key1]['count(*)'] + "\)</li>";				
					}
					html+='</a>';
				}
					console.log(html);
				$("ul.list").html(html);

Собственно, вопрос в том, как пофиксить дублирование строк при выводе их из ассоциативного массива в цикле
Пардон, скорее из объекта, а не массива
Ответить с цитированием
  #17 (permalink)  
Старый 21.10.2016, 15:28
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Зачем этот цикл?
Сообщение от Navka1 Посмотреть сообщение
for (var key2 in list['list'][key1]) {
						//i++;
						//	console.log(i);
						html +='<li class = "big" onclick="findList(' + (+key1 + 1) + ')">' + list['list'][key1]["ima"] + "&nbsp\(" + list['list'][key1]["count(marker.district)"] + "\)</li>";					
						//console.log(list['list'][key1]["ima"]);
					}
Ведь далее про key2 вообще нет ни слова...
Ответить с цитированием
  #18 (permalink)  
Старый 21.10.2016, 15:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Начнем учить тебя как делать тестовый пример...
Сообщение от Navka1
Есть запрос к БД:
Это тут не интересно...
Сообщение от Navka1
Ответ приходит в следующем виде:
{"list":[{"id":"1","ima":"...","count(marker.district)": "1" },
..........,
"allLIST":[{"count(*)":"6"}]}
А вот ответ нужно сделать более полным.
Т.е. привести 3-4 полновесных элемента (а у тебя один) для демонстрации

Ну и потом показать пример хтмля, который хочешь получить на этих данных.

Все!
Тестовый пример готов. С ним можно будет работать.
Ответить с цитированием
  #19 (permalink)  
Старый 21.10.2016, 15:39
Интересующийся
Отправить личное сообщение для Navka1 Посмотреть профиль Найти все сообщения от Navka1
 
Регистрация: 21.10.2016
Сообщений: 12

Сообщение от ksa Посмотреть сообщение
Т.е. привести 3-4 полновесных элемента (а у тебя один) для демонстрации

Ну и потом показать пример хтмля, который хочешь получить на этих данных.

Все!
Тестовый пример готов. С ним можно будет работать.
Слушаюсь, сэр!
Примеры 3-х элементов в list+allLIST:
{"list":[{"id":"1","ima":"\u0421\u0432\u044f\u0442\u043e\u0 448\u0438\u043d\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"2","ima":"\u0413\u043e\u043b\u043e\u0441\u0 435\u0435\u0432\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"3","ima":"\u0414\u0430\u0440\u043d\u0438\u0 446\u043a\u0438\u0439","count(marker.district)":"0 "},
..........
"allLIST":[{"count(*)":"6"}]}

Желаемый html-код:

<li class = "big" onclick="findList(1)">Святошинский&nbsp(0)</li>


Тобишь:

'<li class = "big" onclick="findList(' +КЛЮЧ  id +  ')">' + КЛЮЧ ima + "&nbsp\(" + КЛЮЧ count(marker.district) + '\)</li>'

Последний раз редактировалось Navka1, 21.10.2016 в 15:51.
Ответить с цитированием
  #20 (permalink)  
Старый 21.10.2016, 15:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,213

Сообщение от Navka1
Примеры 3-х элементов в list+allLIST:
{"list":[{"id":"1","ima":"\u0421\u0432\u044f\u0442\u043e \u0 448\u0438\u043d\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"2","ima":"\u0413\u043e\u043b\u043e\u0441 \u0 435\u0435\u0432\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"3","ima":"\u0414\u0430\u0440\u043d\u0438 \u0 446\u043a\u0438\u0439","count(marker.district)":"0 "},
..........
"allLIST":[{"count(*)":"6"}]}
Тут на форуме есть возможность форматировать код...
А мне пришлось твою писанину еще и подправлять.

Вот такой вариант получился.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var obj={
	"list":[
		{
			"id":"1",
			"ima":"\u0421\u0432\u044f\u0442\u043e\u0448\u0438\u043d\u0441\u043a\u0438\u0439",
			"count(marker.district)":"1"
		},
		{
			"id":"2",
			"ima":"\u0413\u043e\u043b\u043e\u0441\u0435\u0435\u0432\u0441\u043a\u0438\u0439",
			"count(marker.district)":"1"
		},
		{
			"id":"3",
			"ima":"\u0414\u0430\u0440\u043d\u0438\u0446\u043a\u0438\u0439",
			"count(marker.district)":"0 "
		}
	],
	"allLIST":[
		{"count(*)":"6"}
	]
};

$(function(){
	var o=$('#test')
	for (var i=0; i<obj.list.length; i++) {
		var str='<li class = "big" onclick="alert(' + (i + 1) + ')">';
		str=str + obj.list[i].ima + '&nbsp;(' + obj.list[i]['count(marker.district)'];
		str=str + ')</li>';
		o.append(str);
	};
});
</script>
</head>
<body>
<ul id='test'></ul>
</body>
</html>

Вот это и называется тестовым примером.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен цикл для создания огромного массива apish Общие вопросы Javascript 2 20.09.2012 16:10
JS Перебор ассоциативного многомерного массива zbs2000 Events/DOM/Window 8 23.07.2012 01:23
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22
Формирование двухмерного массива в javascript Neokortex Элементы интерфейса 9 24.03.2011 17:51
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53