![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
надо написать скрипт создания списка, пишу так
вообще,сюда будет передаваться какой-нибудь параметр,строковый,который будет в списке появляться. но вообщем-то итак не работает,почему?помогите. и еще эту функцию можно в onload запускать при загрузке страницы? |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
|
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Aliance, супер! огромное спасибо! работает!
|
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Чтобы лучше работало - li создаются прямо в obj, а надо в ul (то есть пропущен шаг ul.appendChild(li[i]) ); - li можно создать один раз, затем клонировать в цикле; - свойство innerText работает не везде (надо бы createTextNode(), ну, или innerHTML); - переменная i - глобальная, правильнее сделать её локальной; Это сообщение отредактировал(а) Zeroglif - 28.12.2006, 15:25 |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
И еще ма-a-a-ленький шажочек - obj.appendChild(ul). ;) |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
здорово! буду доделывать! а еще есть вопрос,если мне надо сделать не просто список,а чтобы это были ссылки
таким же образом, создавать элемент A?! внутри списка? Добавлено @ 16:32
вот как-то так,только ссылки не получаются. что не так? Добавлено @ 16:39 все,поняла,свойство забыла a.href = '#'; |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
со всем согласен, почему так не понимаю:
|
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Aliance, а в чем вопрос - почему "переменная i - глобальная", или же почему "правильнее сделать её локальной"?
|
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 9 Всего: 67 |
AKS, у меня тоже возник тот же вопрос -- "переменная i - глобальная?". Кажется var используется как раз для создания локальных переменых.
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
solenko, Вам все правильно кажется. Просто "переменная i - глобальная" - это цитата комментария, который был адресован второму посту в этой теме. Посмотрите, там i как раз без var, и, как результат, "глобализация"...
Ну и заодно уж можно написать, что в этом случае локальная переменная "правильней" хотя бы потому, что просто (именно просто, а если не просто - то есть несколько ньансов) нет совершенно никакой необходимости создавать глобальную переменную. Хотя это случается ("создание глобальных переменных"), конечно же, не умышленно, а по каким-либо другим (неизвестным мне) причинам... |
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Ключевое слово var обязательно используется для объявления переменной (любой). Строго говоря, если нет var, то нет и объявления переменной (это если не расширять термин "переменная" на всё подряд, а оставаться в рамках термина "variable" в ECMAScript). Что касается т.н. "как-бы вроде объявления" глобальной переменной без использования var, то в этом случае на выходе мы получим новое свойство глобального объекта. При "настоящем объявлении" мы тоже получаем новое свойство глобального объекта, отсюда и повелось считать эти две операции равнозначными, хотя на самом деле есть ключевые различия - разные атрибуты, разное время создания, разные глобальные объекты в IE и т.д., да и вообще это разные операции... Локальность и глобальность каждый может понимать по-разному, в стандарте чёткого определения нет, есть только туманное разъяснение, что переменная или связана/определена "with function-local scope in that function" (читай, что локальна по отношению к своей функции), или связана/определена "with global scope" (читай, глобальна). В принципе, этого определения будет достаточно, если понимать, что такое объекты в лексическом окружении ("scope chain"), и как происходит разрешение идентификаторов ("identifier resolution") с учётом вложенных функций и прочих особенностей вроде "with" и т.п. Максимально ограничивать область видимости и время жизни переменных - есть наиполезнейшее занятие, сводящее к минимуму всё плохое (наложение имён, ошибки и проч.). Кроме того, даже если кропотливо следить за глобальными переменными, всегда остаётся проблема оптимизации. Чем сильнее связана переменная, тем проще (быстрее) до неё добраться, простейший пример. |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
||||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
vasac
В действиях, которые предпринимаются движком. Zeroglif, согласитесь, как красноречиво описал Эрик вот здесь работу интерпретатора по данной теме - я читал и наслаждался! P.S. Пользуясь случаем, надо бы поблагодарить Zeroglif'a за хорошую тему - Ссылки на свежее/интересное/познавательное чтиво.. , а остальных призвать читать все то, что упомянутый участник форума любезно предоставляет в этой теме... Это сообщение отредактировал(а) AKS - 8.1.2007, 22:35 |
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Переменные (var-ы) создаются на "нулевой строке" со значением undefined. С 1-ой же строки к ним можно обращаться со всеми вытекающими. Свойства глобального объекта создаются в рантайм при условии, что им присваивается значение, только после этого к ним можно обращаться (это просто результат абстрактной операции PutValue, ES 8.7.2). Все реализации ECMAScript обязаны следовать этому, например, по ссылке, которую привёл AKS, поясняется, как именно это cделано в JScript.
|
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Интересная весчь получается. Попробовал я ради интереса проверить, насколько медленнее обращение к глобальной переменной из глубин, если тупо увеличить число вложенных функций, допустим, до пяти. И получилось, что IE и Opera вполне адекватно и быстро работают (вложенность почти не влияет, т.к. объекты (кроме глобального), у которых ищется переменная - "пустые"), а gecko-браузеры (FF, SeaMonkey) странно тормозят... Это у меня одного так или подтвердите? Тест.
|
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
Zeroglif, да, действительно:
Это сообщение отредактировал(а) vasac - 8.1.2007, 23:35 |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
У меня примерно так же, как у vasac. Заодно еще и в Opera 7 глянул - лишь чуть-чуть медленнее, чем 9-ка, но, однако, хороша эта Opera!
А есть над чем подумать сегодня - почему же в FF такие результаты. Надо бы это к чему-то подвести... |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |