Автор Тема: добавление элемента в <select> => "ошибка на сервере"  (Прочитано 4795 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Задача: добавить новый option в тег select. Задача усложняется, что тег select находится в окне, открывшем другое окно, в котором исполняется JavaScript, а если точнее, скрипт исполняется в одном из фреймов нового окна.
Но нас это не пугает и для обращения к select мы используем list=parent.opener.document.formName.selectName, и всё работает нормально: можем менять selected элемент, прятать весь select c помощью list.style.display=\'none\' и т.д.

Задача добавления нового option в select на испытаниях была успешно решена, если select и скрипт в одном окне: selectName.options[selectName.length] = new Option (\'....\').

Теперь кульминация: если из фрейма окна №2 обратиться к select\'у окна №1, открывшего окно №2, следующим образом -
list=parent.opener.document.formName.selectName;
list.options[list.length]=new Option (...),

то наступает Ж@ПА, а именно выдаётся броузером JS-ошибка под названием "Ошибка на сервере", и ничего не работает.

Почему такое может быть? В какой ситуации вообще может возникнуть эта самая "ошибка на сервере"? При чём тут вообще сервер, если скрипт записывает значение в другое окно?
« Последнее редактирование: 29 Июля 2004, 19:09:52 от Forza »

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
фреймы в одном домене находятся ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
Макс:
фреймы в одном домене находятся ?

Поясни, пожалуйста, что ты имеешь ввиду под доменом.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
например один фрейм имеет адрес
http://www.example.com/bla/bla/bla
а второй фрейм
http://subdomain.example.com/bla/bal/bla
или
http://www.blablabla.com/bla/bal/bla
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Тогда в одном домене. Они даже исполняются одним перловским скриптом: http://www.site.com/cgi-bin/script.pl?bla-bla-bla. Отличаются они только в параметрах bla-bla-bla.

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Неужели никто не знает, почему такое может быть? :(
Интересно хотя бы узнать из-за чего может возникать ошибка в JavaScipt-скрипте, которую броузер называет "ошибкой сервера".

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
а у тебя на локальном компе это все работает или такая же ошибка ?

создай мелнькие ХТМЛ-файлы :
 файл, содержащий твой СЕЛЕКТ
 файл с фрейм-структурой
 и 2 файла для фреймов.
С минимальным ХТМЛ и яваскриптом.
Попробуй, если все это не работает, то выложи на форум.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
Макс:
файл, содержащий твой СЕЛЕКТ

main.html. Содержит функции открытия нового окна и добавления нового элемента в




Open New Window

Add New Item To Select

Цитировать
Макс:
файл с фрейм-структурой

Файл frameset.html, открываемый в отдельном окне из main.html:



Цитировать
Макс:
и 2 файла для фреймов

Файл frame1.html. В нём есть функция, которая в зависимости от входного параметра либо изменяет текущее выбранное значение из другого окна идёт в обоих случаях одинаковым образом (parent.opener.document.conditionForm.person_id), а сам момент добавления нового элемента - аналогичен тому, как это происходит в функции addNewItem() файла main.html.




Add New Item To Select

Change Selected Item


Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
вот такой код у меня заработал (IE6 & Opera 7.23):







Add New Item To Select


First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Макс, огромное спасибо. Всё работает.

А (так для общего развития ;)) есть какие-нибудь идеи, почему мой вариант не работал? Я ведь его брал из мануала ( http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/select.html ), да и для случая "всё в одном окне" было всё ок.

Или это кривость IE? А в "Опере" мой вариант работал?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
добавление элемента в <select> => "ошибка на сервере"
« Ответ #10 : 01 Августа 2004, 19:11:15 »
Цитировать
Forza:
А (так для общего развития ) есть какие-нибудь идеи, почему мой вариант не работал?

идей нет. Я и сам иногда удивляюсь поведению яваскрипта (или тому, как его интерпретируют некоторые броузеры)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
добавление элемента в <select> => "ошибка на сервере"
« Ответ #11 : 02 Августа 2004, 13:50:55 »
Тогда последний вопрос.

Я до этого пользовался документацией на "JavaScript Central" http://devedge.netscape.com/central/javascript/, но там нет ни слова про document.createElement() и select.add(), которые ты использовал в своём скрипте. Ты откуда про них узнал? ;) Есть ссылка в Инете на более полную документацию?

Или надо книгу покупать? Какую?

Потому что иначе, без знания всех возможных функций, программирование весьма затруднено. :(

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
добавление элемента в <select> => "ошибка на сервере"
« Ответ #12 : 02 Августа 2004, 14:26:00 »
у каждого броузера свои особенности и свой диалект яваскрипта.
Поэтому лучше всего доки искать на сайте производителя броузера.

В данном случае я использовал
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/select.asp
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28