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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> this - на что указывает? функция перестала работать 
V
    Опции темы
Valeria
Дата 15.1.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот была такая функция,по которой при нажатии на edit оно менялось на end edit.
теперь не  меняется. видимо дело в this?
что я могла добавить ? новый див? на что вообще this указывает?!

Код

                var numericId = this.id.replace(/[^0-9]/g,'');
        var obj = document.getElementById('dragableBoxEdit' + numericId);
        if(obj.style.display=='none'){
            obj.style.display='block';
            this.innerHTML = txt_editLink_stop;
            document.getElementById('dragableBoxHeader' + numericId).style.height = '135px';
        }else{
            obj.style.display='none';
            this.innerHTML = txt_editLink;
            document.getElementById('dragableBoxHeader' + numericId).style.height = '20px';
        }


Добавлено @ 16:36 
вообще,это окошко на странице,с возможностью перетаскивания.
PM MAIL ICQ   Вверх
skyboy
Дата 15.1.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



смысл this меняется в зависимости от контекста... в данном случае, непонятно, откуда ты вырвала приведенный код. будучи описанным в методе объекта, код будет в качестве this использовать текущий объект. вне всех функций - объект window. в функции - зависит от браузера. внутри HTML-описания событий - на текущий элемент...
PM MAIL   Вверх
Valeria
Дата 15.1.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не знаю как лучше объяснить, код большой очень.
Может это поможет,функция (описанная выше) editRSSContent - вот таким образом определяется.

Код

var editLink = document.createElement('A');
...
editLink.onmousedown = editRSSContent;



PM MAIL ICQ   Вверх
vasac
Дата 15.1.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Цитата(Valeria @  15.1.2007,  16:35 Найти цитируемый пост)
вот была такая функция,по которой при нажатии на edit оно менялось на end edit.
теперь не  меняется. видимо дело в this?

Где менялось? После каких событий перестало меняться?

Цитата(Valeria @  15.1.2007,  16:59 Найти цитируемый пост)
функция (описанная выше) editRSSContent

Где выше?

Цитата(Valeria @  15.1.2007,  16:59 Найти цитируемый пост)
editLink.onmousedown = editRSSContent;

Обработчик события будет выполняться в контексте объекта window
тьфу, в контексте объекта, соответствующего div-у, конечно.

Это сообщение отредактировал(а) vasac - 15.1.2007, 17:38
PM WWW   Вверх
Valeria
Дата 15.1.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот функция 
Код

function editRSSContent()
    {
        var numericId = this.id.replace(/[^0-9]/g,'');
        var obj = document.getElementById('dragableBoxEdit' + numericId);
        if(obj.style.display=='none'){
            obj.style.display='block';
            this.innerHTML = txt_editLink_stop;
            document.getElementById('dragableBoxHeader' + numericId).style.height = '135px';
        }else{
            obj.style.display='none';
            this.innerHTML = txt_editLink;
            document.getElementById('dragableBoxHeader' + numericId).style.height = '20px';
        }
        setTimeout('dragDropCounter=-5',5);
    }


что менялось после,я не знаю, это большой проект,делаю не только я. поэтому и спрашиваю!
кстати, добавляла функции с событием onmousedown в другом месте. может он повлиял как-то?!
PM MAIL ICQ   Вверх
skyboy
Дата 15.1.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Valeria, так тот код, что ты привела выше, внутри функции? ага....
в принципе, должно указывать на editLink. на что ругается, когда "не меняется"?
пошаговую отладку делала? функция вообще вызывается?
PM MAIL   Вверх
Valeria
Дата 15.1.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

на что ругается, когда "не меняется"?

ни на что не ругается,просто нет замены.
Цитата

пошаговую отладку делала? 

пошаговую отладку не делала, потому что никогда ей не пользовалась.
Цитата

функция вообще вызывается? 

функция вызывается, т.к. block-display выполняется,который там описан. 
PM MAIL ICQ   Вверх
skyboy
Дата 15.1.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Valeria, firefox в пределах досягаемости? если да, поставь firebug (переходить по ссылке лучше из-под FireFox - сразу и установишь)- можно будет сделать пошагово отладку функции и посмотреть, на что ссылается this. 
PM MAIL   Вверх
Zeroglif
Дата 15.1.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Перед block-display надо алерт вставить alert([this.innerHTML, txt_editLink]), чтобы сразу определить, корректен ли this (с виду корректен) и в порядке ли переменная, присваемая innerHTML.
PM MAIL WWW   Вверх
skyboy
Дата 15.1.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



...и посмотреть, что происходит внутри функции при выполнении...
PM MAIL   Вверх
Valeria
Дата 15.1.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smile 
странно,дело не в this оказалось! с ним все нормально.
а вот с if-else я не поняла?! alert не выдал ничего,значит не зашел он туда,так?
но вот это выполняется 
Код

 document.getElementById('dragableBoxHeader' + numericId).style.height = '135px';


размер меняется!!!  smile

Добавлено @ 18:04 
я вот так для начала написала:
Код

var numericId = this.id.replace(/[^0-9]/g,'');
        var obj = document.getElementById('dragableBoxEdit' + numericId);
                alert(numericId);
        if(obj.style.display=='none'){
            obj.style.display='block';
            this.innerHTML = txt_editLink_stop;
                        alert('if');
            document.getElementById('dragableBoxHeader' + numericId).style.height = '135px';
        }else{
            obj.style.display='none';
            this.innerHTML = txt_editLink;
                        alert('else');
            document.getElementById('dragableBoxHeader' + numericId).style.height = '20px';
        }


вот он 2 выдал,а больше ничего!

Добавлено @ 18:08 
щас запутаю только вас! smile 
этот alert после this.innerHTML = оказывается не работает,а до сработал?!

PM MAIL ICQ   Вверх
Valeria
Дата 15.1.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



блин!!! smile 
в FF все работает!!!!! при чем не только это!!! у меня еще есть одна проблема!
PM MAIL ICQ   Вверх
Valeria
Дата 15.1.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



исправила вот что innerHTML на innerText  smile 
и все!
PM MAIL ICQ   Вверх
skyboy
Дата 15.1.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Valeria, повтори. не выполняется ни if-ветвь, ни else?
PM MAIL   Вверх
SelenIT
Дата 15.1.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(Valeria @  15.1.2007,  18:42 Найти цитируемый пост)
исправила вот что innerHTML на innerText


Valeria, и оно по-прежнему работает в FF?


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


 




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


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

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