Страницы: 1
Здаравствуйте, пишу скрипт для GreaseMonkey, что-то наподобие телефонной книги. В сам скрипте создаётся DIV, внутри которого имеются 2 формы. Внутри каждой формы таблица, в которой и разбиты элементы. DIV создаётся при помощи .appendChild, содержание уже как innerHTML. После создания DIVа указатели на формы при помощи .getElementById заносятся в переменные класса. Всем элементам форм присвоены аттрибуты name. На кнопки формы навешаны обработчики при помощи .addEventListener, так же являются методами класса. Проблема в следующем: при клике на кнопку, вызывается нужный обработчик, в котором необходимо обратится к полям формы, но при попытке ипользовать конструкцию FormVar.ElementName или FormVar.elements["ElementName"] элемент undefined. Если же обратится как FormVar.elements[ElementIndex], то всё в порядке. Есть ли какой-либо другой выход, так как обращение по индексу мне не подходит, а использовать .getElementById на все элементы формы не хотелось бы. Зарание спасибо. Ниже приведена часть скрипта относящаяся к проблеме.
var SMSSenderWindow = { MainWindow: null, fForm: null, fPhonebook: null, ... CreateWindow: function () { var fWindow = document.createElement("DIV"); fWindow.id = "SMSSenderWindow"; fWindow.innerHTML = "" ... + "<form id='SMSSenderPhonebookForm' name='SMSSenderPhonebookForm'>" + " <table id='SMSPhonebookTable' class='smsTable' style='display: none;'>" ... + " <tr id='SMSPBDetailBox' style='display: none;'>" + " <td style='border-bottom: 2px #000000 solid;'>" + " Name: " + " <input type='text' id='SMSPBPDetailName' name='PhonebookName'>" + " <br>" + " Operators: " + " <select id='SMSPBDetailOperators'>" + OperatorsSelect + " </select>" + " Phone: +7" + " <input type='text' id='SMSPBDetailPhoneCode' maxlength='3' name='PhonebookPhoneCode'>" + " <input type='text' id='SMSPBDetailPhoneNumber' name='PhonebookPhoneNumber'>" + " <br>" + " <center>" + " <input type='button' class='smsPBButtonsDetailBox' id='SMSPBDetailOK' value='OK'>" + " <input type='button' class='smsPBButtonsDetailBox' id='SMSPBDetailCancel' value='Cancel'>" + " <center>" + " </td>" + " </tr>" ... + " </table>" + "</form>"; this.MainWindow = document.body.appendChild(fWindow); this.fSend = document.getElementById('SMSSenderSendForm'); this.fPhonebook = document.getElementById('SMSSenderPhonebookForm'); ... document.getElementById('SMSPBDetailOK').addEventListener('click', this.OnPhonebookDetailOk, false); document.getElementById('SMSPBDetailCancel').addEventListener('click', this.OnPhonebookDetailCancel, false);; }, ... OnPhonebookDetailOk: function () { ... // Вот в таких обращениях получаю undefined элемента формы AbonentUnit.Name = SMSSenderWindow.fPhonebook.PhonebookName.value; AbonentUnit.PhoneCode = SMSSenderWindow.fPhonebook.PhonebookPhoneCode.value; AbonentUnit.PhoneNumber = SMSSenderWindow.fPhonebook.PhonebookPhoneNumber.value; ... }, ... };
Отредактировано NerV (28-11-2010 16:44:27)
Отсутствует
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
извините, если пишу не туда... Можете сказать можно ли в greasemonkey сделать скрипт который бы нажымал бы ссылку на оприделенной стоанице... и как можно это сделать???? за ранее спасибо!!!
Отсутствует
ksbe
Посмотрите здесь - обсуждался схожий вопрос. Возможно, удастся обойтись без всяких скриптов - тем же iMacros, например.
Отсутствует
Страницы: 1