Не могу в setInterval вызвать метод объекта
Привет!
Есть вот такой несложный объект: var MyMsg = { // отправка сообщения ------------------------------------------------- sendMsg: function (myid) { // проверим AJAX-ом не добавлялось ли сегодня такое сообщение ReadFromSrv( 'ajaxresp', 'chkmsg.php', 'text='+$('TXT').value+ '&myid='+myid, 'GET' ); // ждем ответа и отправим форму var tmr = setInterval( function () {this.sendFormOnResponce();}, 20 // интервал в милисекундах ); } // отправить форму ----------------------------------------------------- sendForm: function () { $('BAD').value = 'BAD'; $('msgadd').submit(); }, // если пришел ответ от сервера, то отправим форму --------------------- sendFormOnResponce: function () { var res = ''; //проверка есть ли уже ответ от сервера if ($('ajaxresp').value != '') { res = $('ajaxresp').value; } else { res = false; } // если все хорошо, отправить форму if (res) { // остановим таймер clearInterval(tmr); if (res === '0') { // отправляем форму this.sendForm(); } else { // сервер вернул текст. покажем его alert(res); } } }, } Значит, этот код располагается на странице в разделе <BODY> в начале. На странице есть кнопка у которой в onclick прописано: onclick="javascript:MyMsg.sendMsg('$hash');" Страница загружается без ошибок. При нажатии на кнопку случается ошибка: Uncaught exception: TypeError: 'this.sendFormOnResponce' is not a function Т.е. при нажатии взводится setInterval, которой передается функция this.sendFormOnResponce, и которую JS функцией считать не хочет... Никак не пойму, отчего такая ошибка. Что я делаю не так? p.s. в не-объектном виде (т.е. в виде набора из отдельных процедур) это все работает, я учусь работать через объекты. |
... var th = this; this._tmr = setInterval( function () {th.sendFormOnResponce();}, 20 // интервал в милисекундах ); ... // остановим таймер clearInterval(this._tmr); ... |
А почему так? В setInterval не передается значение this?
|
не передается.
|
Понятно, спасибо)
|
Часовой пояс GMT +3, время: 22:49. |