Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перезагрузка страницы и окружение JS, пропадают переменные, как их сохранить? 
:(
    Опции темы
Vidocq
Дата 18.11.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Код

   if(window.showModalDialog(url, "displayWindow", frs)==1)
   {
      location.reload();
      row.className = "Modified";
   }


Почему то после релоуда не происходит изменение стиля.
Стиль описан в подключённом файле и остальные стили из него работают как надо

Код

tr.Modified {background-color: blue; cursor : hand;}


В чём проблема?


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Ciber_SLasH
Дата 18.11.2005, 16:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Для начала хотелось бы узнать как описана переменная "row", возможно что-то в этом глючит.
Ещё как я понял для релоада страницы, если нужно чтобы страница бралась не из кэша, а от сервера, то нужно писать так: location.reload(true);
  Вверх
Vidocq
Дата 18.11.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Код

var curRow = null
var curRowID = 0
var row = null//инициализирую её тут



function trDblClick (tr)
{
         if(curRow != null)
      curRow.className = "notSelected"

   tr.className = "Selected"

        curRow = tr
   curRowID = tr.id

   row = tr // получает значение this из tr таблицы
   editItem()

}


function editItem()
{
         if (curRowID == 0)
        {
           alert("Запись не выбрана!")
                     return false
        }
        frs="dialogHeight: 140px; dialogWidth: 330px; status=no; toolbar=no; menubar=no";
   url="updatePoint.php?pointid="+curRowID;
   if(window.showModalDialog(url, "displayWindow", frs)==1)
   {
      location.reload();
      row.className = "Modified";//вот тут я бы хотел этому тр'у из таблицы присвоить новый стиль
   }
}




--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Guest
Дата 18.11.2005, 18:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Когда происходит перезагрузка страницы, то все переменные JavaScript создаются заново, поэтому переменная "row" уже не будет указывать на объект, а будет заново установлено в "null".

Сформулируй точнее задачу, этот способ явно не подходит. Объясни что именно нужно, когда и как...
  Вверх
Vidocq
Дата 18.11.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



2Guest,
то, что ты говоришь - очень логично. Как я сам до этого не додумался?
Нужно мне следующее:
1)По щелчку на рядке таблицы вызывается окно showModalDialog. В него юзер вводит данные и нажимает ОК smile
2)Происходит сохранение в БД и, для того, чтоб изменения сразу были видны пользователю, я перегружаю страницу: location.reload()

Я хотел бы после этого наглядно показать юзеру, какой ряд таблички был изменён, подсвечивая его другим цветом. Для этого я хотел динамически менять стиль. Но с релоудом, вижу, это не пройдёт.
Как быть в такой ситуации?


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Ciber SLasH
Дата 18.11.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Я вижу 3 пути решения этой проблемы:
1) поставить на страницу с таблицей скрытый IFRAME и после редактирования подгружать обновлённую страницу в этот IFRAME. После подгрузки, изменённые данные отображать на странице.
2) перед открытие диалога писать в куки ID ряда таблицы, который нужно подсветить. После перезагрузки страницы читать куки и подсвечивать соответствующий ряд.
3) использовать XmlHttpRequest
PM   Вверх
Vidocq
Дата 19.11.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Ciber SLasH
Номер 2 мне подходит, я попробую его осуществить ;)



--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Sardar
Дата 19.11.2005, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Лучше выполнять обновление БД не в два запроса(отправить форму в малом окне, перезагрузить родителя), а в 1(отправить форму в родителе). Сервер после обновления сразу же строит таблицу с результатами, подсвечивая изменения.

Плюсы подхода в универсальности и безотказности, минусы в чуть-более сложной логике на сервере.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Vidocq
Дата 21.11.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Ciber SLasH
Писать в куки не стал. Сделал через сессию

Sardar
Как это сделать, не вызывая при этом маленькое окно?


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Sardar
Дата 21.11.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Vidocq @ 21.11.2005, 14:09)
Как это сделать, не вызывая при этом маленькое окно?

Сказал же отправляешь форму с изменениями в текущем окне, я где то приводил пример как при клике на ячейке заменять её на input:text, который будет отправляться на сервер.

Но метод хуже, чем просто запомнить в сессии изменённые строки.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Vidocq
Дата 22.11.2005, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Sardar
Всё. Вспомнил smile Тот пример у меня действительно сохранился.
Спасибо.


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Гость_12345
Дата 22.11.2005, 20:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Можно было несколько проще (4-й способ) - писать переменную в скрытый параметр формы, который сохраняется при релоуде, а по загрузке (перезагрузке) при наличии в нём записи устанавливать.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.