Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доступ к элементам объекта (https://javascript.ru/forum/misc/45813-dostup-k-ehlementam-obekta.html)

DeSharky 17.03.2014 13:37

Доступ к элементам объекта
 
Все привет. Я только изучаю js, сильно прошу не пинать.
Имеется объект такого вида:
{ "results":
{ "fields": [ "Name", "Shirota", "Dolgota", "Contacts" ],
"rows": [ { "Name": "Bamberg", "Shirota": "48.725925", "Dolgota": "44.541419", "Contacts": "17" },
{ "Name": "Kalash", "Shirota": "48.725935", "Dolgota": "44.541419", "Contacts": "17" } ] },
"errors": { "length": 0 } }

Мне нужно выдернуть значения. Как правильно это сделать?
Пробовал такой код:
Код:

    jQuery.each(obj, function(i, val) {
      $("#" + i).append(document.createTextNode(" - " + val));
    });

Но он возвращает Object

ksa 17.03.2014 14:13

Цитата:

Сообщение от DeSharky
Имеется объект такого вида:
Цитата:

Сообщение от DeSharky
Как правильно это сделать?


Так понятно?

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var obj={ 
	"results": { 
		"fields": [ "Name", "Shirota", "Dolgota", "Contacts" ], 
		"rows": [ 
			{ "Name": "Bamberg", "Shirota": "48.725925", "Dolgota": "44.541419", "Contacts": "17" },
			{ "Name": "Kalash", "Shirota": "48.725935", "Dolgota": "44.541419", "Contacts": "17" } 
		] 
	}, 
	"errors": { "length": 0 } 
}
jQuery.each(obj, function(i, val) {
	alert(i);
});
</script>
</head>
<body>
</body>
</html>

DeSharky 17.03.2014 14:35

Как работает то понятно, только результат не тот, что нужен - возвращает
results и errors,а мне нужны "внутренности"

ksa 17.03.2014 14:39

Цитата:

Сообщение от DeSharky
возвращает
results и errors

так ты по ним и бежишь... :D

Цитата:

Сообщение от DeSharky
а мне нужны "внутренности"

Тгда просто бери их и все дела.

DeSharky 17.03.2014 14:45

Код:

                jQuery.each(results.results.fields, function(i, val) {
                        alert(i);
                });

попробовал так - не работает, выдает по очереди от 0 до 3

ksa 17.03.2014 15:08

Цитата:

Сообщение от DeSharky
попробовал так - не работает

Во тебя прет! :D

var obj={ 
	"results": { 
		"fields": [ "Name", "Shirota", "Dolgota", "Contacts" ], 
		"rows": [ 
			{ "Name": "Bamberg", "Shirota": "48.725925", "Dolgota": "44.541419", "Contacts": "17" },
			{ "Name": "Kalash", "Shirota": "48.725935", "Dolgota": "44.541419", "Contacts": "17" } 
		] 
	}, 
	"errors": { "length": 0 } 
}
for (var i=0; i<obj.results.fields.length; i++) {
	alert(obj.results.fields[i]);
};

ksa 17.03.2014 15:14

Цитата:

Сообщение от DeSharky
а мне нужны "внутренности"

Как вариант

var obj={ 
	"results": { 
		"fields": [ "Name", "Shirota", "Dolgota", "Contacts" ], 
		"rows": [ 
			{ "Name": "Bamberg", "Shirota": "48.725925", "Dolgota": "44.541419", "Contacts": "17" },
			{ "Name": "Kalash", "Shirota": "48.725935", "Dolgota": "44.541419", "Contacts": "17" } 
		] 
	}, 
	"errors": { "length": 0 } 
}
for (var j=0; j<obj.results.rows.length; j++) {
	for (var i=0; i<obj.results.fields.length; i++) {
		var fld=obj.results.fields[i];
		alert(fld+'['+j+']='+obj.results.rows[j][fld]);
	};
};

DeSharky 17.03.2014 15:24

О, вот это огонь, то что нужно. Спасибо!


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