Javascript.RU

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

как разпринтить все существующие переменные
пробовал сделать так
function init()
    {
	    for (var k in this)
		{
			alow += '<li>'+k+"=>"+(typeof this[k])+"</li>\n";
		}
		document.write('<ul>'+alow+'</ul>');
    }

к сожалению ничего не вышло пишет предполагаемое наличие объекта
пробовал разпринтить переменную document вот так
function init()
    {
	    for (var k in document)
		{
			alow += '<li>'+k+"=>"+(typeof document[k])+"</li>\n";
		}
		document.write('<ul>'+alow+'</ul>');
    }

в итоге ничего не получилось пишет тоже самое
скажите пожалуйста как это сделпть
Ответить с цитированием
  #2 (permalink)  
Старый 20.04.2008, 10:40
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

никак
Ответить с цитированием
  #3 (permalink)  
Старый 21.04.2008, 00:34
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 14.03.2008
Сообщений: 169

tenshi,
кажется у тебя на все вопросы ответ никак.
Ответить с цитированием
  #4 (permalink)  
Старый 21.04.2008, 01:51
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

scuter, ну все-не все, а вывести содержимое хэша можно. Идея у тебя правильная - пройтись for'ом ... in ... по объекту, выводя ключ и значение по ключу (obj[ключ]) (ну ты вместо значения выводишь тип - не понятно зачем, ну надо, - значит надо ).

P.S.: кстати, оба твоих примера рабочие (первый для window, т.к. this в этом случае ссылается на него, во втором - явно - document) - ты просто забыл объявить переменную alow до использования (alow += ...). Просто поставь var allow = ''; в самом начале функции.

P.S.[2]: Для дебага можно переписать метод toString в прототипах Object'a и Array'я (как пример - здесь - там в самом низу, листинг 20).
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2008, 03:28
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

scuter, видимо потому, что ты вечно хочешь невозможного :-)
Ответить с цитированием
  #6 (permalink)  
Старый 21.04.2008, 19:12
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 14.03.2008
Сообщений: 169

ds [.code],
большое спасибо, я как то не доглядел это дело с alow
сейчас попробовал просмотреть "2 уровень в обьектах"
но это дело почемуто не выходит,
код вот такой
var alow = '';
document.write('<ul>');
for (var k in this)
{
    if(typeof this[k] == 'object')
    {
    	var termo = '';
    	var ject = eval('this.'+k);
    	document.write('<li>'+k+"=>"+(typeof this[k])+"(<ul>");
    	for (var d in ject)
    	{
    		document.write('<li>'+d+"=>"+(typeof this[k][d])+"</li>\n");
    	}
    	document.write("</ul>)</li>\n");
    }
    else if(typeof this[k] == 'string')
    {
    	document.write('<li>'+k+"=>"+(typeof this[k])+"("+eval('this.'+k)+")</li>\n");
    }
	else
	{
		document.write('<li>'+k+"=>"+(typeof this[k])+"</li>\n");
	}
}
document.write('</ul>');

в IE тормозится где то в external
а в FF гдето в document-те
интересно почему???
tenshi,
как видишь нет ничего невозможного.

Последний раз редактировалось scuter, 21.04.2008 в 20:10.
Ответить с цитированием
  #7 (permalink)  
Старый 21.04.2008, 22:07
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Просто для справки: вместо
eval('this.'+k)
можно писать
this[k]
Ответить с цитированием
  #8 (permalink)  
Старый 21.04.2008, 22:18
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Цитата:
как видишь нет ничего невозможного.
не вижу
Ответить с цитированием
  #9 (permalink)  
Старый 22.04.2008, 01:27
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

scuter,

> интересно почему???

слишком глубокие хэши, к тому же некоторые являются рекурентными (в некоторых свойства имеют ссылку на самих себя) - при обычной рекурсивной организации может быть вообще зацикливание
Ответить с цитированием
  #10 (permalink)  
Старый 22.04.2008, 10:05
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Цитата:
рекурентными (в некоторых свойства имеют ссылку на самих себя)
рекурсивным
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма как в ExtJS 2 magistr_bender Общие вопросы Javascript 0 11.09.2008 16:01
Раскрывающееся меню, как переставить на другую сторону? Resager Events/DOM/Window 8 22.08.2008 21:56