![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Gwire |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
У меня есть станицы на которой много элементов тегов <select>, <input>, <textarea> и др. Причем их количество на каждой из станиц разное, разные параметры. Одни видемые другие нет. В процессе выполнения скрипта мне нужно деактивировать все элементы. Пример деактивации всех объектов для <input>:
Аналогично для <select> и <textarea>. Позже мне нужно востановить значения активности. Допустим так:
И вроде все нортально, но у меня есть необходимось в этот массив сохранить не только "Elements[i].disabled", а еще и "document.body.scroll", "document.body.bgColor", "document.body.onclick" и др. Я питаюсь найти альтернативу запоминания порядка "push-ирования". Через простое сохранение значения указателя:
Подскажите 1) как структуры определяются в javascript и 2) как получить указатель на объект? Это сообщение отредактировал(а) Gwire - 9.7.2008, 09:57 |
||||||||
|
|||||||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
деактивация? а с какой целью? мож проще залить всё сверху сплошным слоем, через который не пробиться?
|
|||
|
||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
Поповоду "проще залить всё сверху сплошным слоем" я использую такую конструкцию:
но есть одно "НО" с помощью [TAB] можно перейти на закритые объекты. По тому-то и нужна деактивация. 1) как получить указатель на объект и 2) как определяются структуры в javascript? Это сообщение отредактировал(а) Gwire - 9.7.2008, 10:27 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
нет, ну почему, может быть удастся пройти по DOM и деактивировать всё подряд:
|
|||
|
||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
А как на счет: структур в javascript и получения указателя на объект? |
|||
|
||||
| dsCode |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
в JS эту роль играют объекты (хэши):
в JS нет указателей; присваивая переменной объект, можно на него сослаться:
|
||||
|
|||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
Такой пример: Мне нужно сохранить значения document.body.scroll, "document.getElementsByTagName('input')[0..n].disable", document.body.onload, document.title, и еще много другой информации в массив. Понятно, что это все примитивы а не объекты. Если сохранять объекты, например document.body, то я не буду знать, какие данные мне нужно востанавливать onload или scroll, или то и другое. Хотелось бы чтобы можно было осуществить такой алгоритм:
|
|||
|
||||
| dsCode |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
можно сохранять объект и массив свойств этого объекта для восстановления; кстати, свойство onload, например, - так же является объектом, а не примитивом (т.е. при восстановлении можно сослаться на него прямо). P.S.: вообще, затея несколько странная |
|||
|
||||
| Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: нет Всего: 13 |
А не проще ли ловить табуляцию по событию и прекращать его, вроде ж можно так?
-------------------- |
|||
|
||||
| ksnk |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Толком не догнал, что-же нужно топикстартеру
Насколько удалось понять - нужно сохранить "предыдущее состояние" "окна" и уметь восстанавливать его обратно. Понятно, что абстрактная задача имеет абстрактную область применения, так что добавим конкретики. "Окно" - состояние дерева объектов. Под "состоянием" будем иметь ввиду набор свойств (зафиксированный набор) какой-то веточки этого дерева. Итого - решение становиться несколько более очевидным. Нужно каждое действие по изменению состояния записывать в какой-то лог, а затем, по этому логу восстанавливать обратно. Чтобы "пометить" изменяемый объект - мы будем присваивать ему новый уникальный идентификатор, если, у него его не было.
Теперь сочиним функции изменения свойства и записи в лог. Зафиксируем набор свойств - пусть это будет backgroundColor и display.
Ну и восстанавливать обратно по логу состояние объектов
Помогло? Это сообщение отредактировал(а) ksnk - 12.7.2008, 10:46 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||||
|
|||||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
Над таким решением я уже думал. Правда не так "прямо" (у меня черт ногу сломит).
Но этот вариант не подходит из-за не универсальности. Функция должна принимать совершенно произвольные значения, заранее не известные. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Если функция принимает совершенно неизвестные значения, то и сделать она сможет только неизвестно что ;-) Задача должна ставится конкретно, тогда и решение надется само...
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
Возможно код объяснит лучше, что именно я питаюсь добиться.
Это сообщение отредактировал(а) Gwire - 22.7.2008, 12:19 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Gwire, Нет. Паскаль не подходит. Нужно попытаться словами объяснить что-же надо сделать. Это очень сильная магия! После формулировки правильными словами многие задачи решаются сами.
Еще интересует почему предложенная мной схема отличается принципиально от приведенной в Паскальном тексте? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
Незнание ответа влечет за собой формулировку вариантов решения.
Вариантов, не всегда, как стает известно в последствии, подходящих для решения паставленной задачи. Алгоритм решения этой задачи не должен ссылаться не накие либо елеленты кроме переменной значение которой нужно сохранить. Функции должно быть совершенно все равно какому объекту пренадлежит переменная. Приведений мной выше пример на Delphi перевести на javascript несоставляет труда, кроме конструкций "@Val" (получение адреса) и "P^" (обращение к значению). P.S. dsCode Хочу заметить..,
что перемення функции не содержит указатель на фукцию (строки 5 и 6), как это происходит с объектами и значения присваиваются так же как и у примитивов. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |