13016 / 7407 / 801
Регистрация: 09.09.2009
Сообщений: 28,986
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
не могу в POPUP окне кнопкой вызвать функцию19.05.2012, 16:05. Показов 1653. Ответов 6
Метки нет (Все метки)
Слепил такой код:
Застрял на обработке нажатия кнопочки. Причем на простом закрытии окна. Если на кнопочку вешаю просто команду закрытия вот так:
а вот когда на ней прописано так
Консоль гугл-хрома показывает ошибку "Uncaught ReferenceError: WrtoDoc is not defined " (см. скриншот), хотя в коде вроде как я нарисовал данную функцию:
0
|
19.05.2012, 16:05 | |
Ответы с готовыми решениями:
6
Не могу вызвать функцию Не могу вызвать функцию Не могу вызвать функцию в python Не могу вызвать пользовательскую функцию |
Заблокирован
|
|
19.05.2012, 16:58 | 2 |
из существующего (родительского) окна вы открываете новое (дочернее) окно.
когда вы пишете в тегах дочернего окна onchange=\"javascript:WrtoDoc();\" и onClick=\"javascript:WrtoDoc();\", то браузер ищет функцию WrtoDoc() в текущем (дочернем) окне. а её там нет - ведь она прописана вами в родительском окне. браузеру нужно указать путь к функции (чтобы он понял, что функция находится в родительском окне) это делается так: onchange=\"opener.WrtoDoc ()\" и onclick=\"opener.WrtoDoc ()\" в скобках отмечу, что протокол javascript: используется только и исключительно в атрибуте href тега <a>. использовать его в событиях - отличительный признак ньюба. теперь, когда браузер найдёт функцию WrtoDoc () в том месте, где она реально прописана, то он не сможет её выполнить, так как функция WrtoDoc (), будучи прописанной в родительском окне, строкой self.close(); предписывает закрыть именно текущее (родительское) окно. а закрывать-то вам надо дочернее. укажите внутри функции нужное вам дочернее окно - my_popup.close (); - и будет вам счастье: дочернее окно будет закрываться. только вот передавать родительскому окну дочернее окно ничего не будет - вы этим не озаботились. полагаю, что через некоторое время с вопросом ("закрывается, но не передаёт") вы сюда снова придёте
1
|
13016 / 7407 / 801
Регистрация: 09.09.2009
Сообщений: 28,986
|
|
19.05.2012, 17:06 [ТС] | 3 |
так и есть.
Спасибо за ответ - закрытие окна работает. а как нужно правильно "собрать вкучку" значения которые будут выставлены пользователем в этом попап окне и вернуть их в поле ввода основного окна?
0
|
Заблокирован
|
||||||
19.05.2012, 17:44 | 4 | |||||
внутри функции WrtoDoc () вам надо обойти все элементы формы
с именем strstpsel и получить от каждого его value. в скобках отмечу, что использование вами самолично придуманных имён для формы и её элементов - strstpsel, strday, strtime и т.д. - я очень и очень приветствую! потому как жутко надоел примивизм мышления тех, кто в html-коде пишет: <form name="form"> <input type="text" name="text" id="text"> </form> а потом ещё и в javascripte добавляет var text = document.form.text; //или document.getElementsById ('text'); имена переменных и значения атрибутов name, id и class должны быть уникальными и не совпадать ни с друг другом, ни с существующими именами свойств и типов элементов. это, во-первых, позволит избежать ошибок в идентификации переменных и объектов браузером (а иногда такие ошибки из-за этого вылезают, что находить их замучаешься); и, во-вторых, значительно облегчит работу с кодом при поисках ошибок и при переделке. итак, возвращаясь к баранам. обход элементов формы дочернего окна следует осуществлять с указанием - что форма находится в дочернем окне, но присваивать значения надо переменным и объектам, кои находятся в родительском. т.е. в общем виде конструкция такова: слева от оператора присвоения переменные и объекты текущего window, а справа от оператора присвоения - значения тегов дочернего окна. например, так:
(в первый раз вы это сделали руками) переводить 'Mo' в 'Понедельник' и '0100' в '01:00' сразу скажу, что это - напрасный труд. и оба раза - напрасный. но... будет работать и так. хотя можно сделать проще. и сильно облегчить html-код.
1
|
13016 / 7407 / 801
Регистрация: 09.09.2009
Сообщений: 28,986
|
|||||||||||
19.05.2012, 18:02 [ТС] | 5 | ||||||||||
Не по теме: я это проходил на php насколько помню, "класс" как раз может быть один наложен на ряд элементов, а "ид" и "имя" - д.б. уникальны. В данном случае, как раз не буду - это окно как раз должно в понятной для юзерва форме собрать его пожелания, а потом сформировать из них шаблон в котором как раз используются Mo, Tu и так далее http://www.gnu.org/software/ra... tml#SEC358 по теме. Чтобы результат моей "обработки" вернуть в поле ввода родительского окна (а там есть такое поле):
0
|
Заблокирован
|
|
19.05.2012, 18:43 | 6 |
вы меня не поняли.
я написал о том, что сами имена (наборы символов), используемые для id, name, class и для имен переменных, должны быть уникальными и не совпадать с уже существующими именами (наборами символов) объектов, коллекций, свойств и всего того, что уже в браузере поименовано. не должно быть var alert, id="window", name="text", class="document" - потому что в браузере уже есть объекты document и window, свойство окна alert и тип инпута text. а о том, что id должно быть уникально в документе, а class и name могут применяться к любому количеству элементов, я думал - вы знаете (оказалось - не знаете, name приписали к уникальным). как вы создадите группу из 10-ти зависимых радиокнопок, если не будете использовать для этих десяти <input type="radio"> одинаковых name? как раз так и надо.
1
|
13016 / 7407 / 801
Регистрация: 09.09.2009
Сообщений: 28,986
|
|
19.05.2012, 19:28 [ТС] | 7 |
Не по теме: "10 зависимых радиокнопок" дадут вам на выходе ОДИН параметр, который достанется обработчику формы. Спасибо, я уже попробовал, все получилось.
0
|
19.05.2012, 19:28 | |
19.05.2012, 19:28 | |
Помогаю со студенческими работами здесь
7
Не могу вызвать функцию PSNR Не могу вызвать функцию из .dll Редактирование main и popup menu кнопкой Не могу вызвать функцию data() из вектора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |