Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.187.103] |
|
Сообщ.
#1
,
|
|
|
Добрый день, подскажите по следующей проблеме:
есть edit есть button на кнопку вешаем событие onclick по которому меняем содержимое edit $("#testedit").attr("value","22222222"); содержимое меняется, но только 1 раз. Что за глюк ? И вообще, как можно отлаживать скрипты? Ни в редакторе, ни в браузере (фаербаг для хрома) ошибки жаваскрипта почему-то не отображаются (( |
Сообщ.
#2
,
|
|
|
1) Удаляешь файребаг для хрома
2) Нажимаешь f12 (или Ctrl+Shift+I) и используешь отладчик вебкита Объясню почему: Это примерно как скачать хром тот же и поставить на него плагин, который превращает его в ИЕ6 - во-первых костыль, во-вторых настолько же бессмысленно. Отладчик вебкита на порядок превосходит файрбаг-плагин в плане функциональности Т.е. из этого следует что: 1) Либо файрбаг глючит (т.к. костыль) 2) Либо не проставил в нём фильтр "отображать ошибки JS" 3) Либо ошибок просто нет. Если считаешь, что ошибки всё же есть - предлагаю для начала поставить точку останова на изменение атрибута нужного элемента (правой кнопкой в Elements по нужному элементу - id="testedit"). Затем смотреть, срабатывает ли эта точка останова. |
Сообщ.
#3
,
|
|
|
Zafod Biblebox
всё, с отладкой разобрался, родной отладчик ошибки видит, спасибо. А вот с событием по прежнему засада. Первый раз оно срабытывает, содержимое едита меняется, но если в нём после этого дописать или изменить что-то, то больше ничего не меняется |
Сообщ.
#4
,
|
|
|
Каждый DOM элемент передаётся по ссылке. Возможно после каких-либо манипуляций - ссылка исчезает (т.е. операции над элементом уходят в пустоту). Т.е. мы имеем совершенно другой DOM элемент. Предлагаю после манипуляций открыть консоль и набрать:
document.getElementById('testedit'); // или можно так $('#testedit')[0]; После этого должен вернуться DOM элемент (он отображается как тег в консольке). При наведении не него в консольке, если ссылка указывает верно - должен подсветиться соответствующий элемент в панельке Elements. Что бы отобразить одновременно консоль и список тегов - надо перейти на вкладку "Elements" и жмякнуть по иконке (справа-сверху) ">E" (угловая стрелка с тремя горизонтальными линиями). |
Сообщ.
#5
,
|
|
|
Zafod Biblebox
Сделал всё как вы сказли, ссылка указана верно, элемент подсвечивается, да и не могло быть по-другому. Более того, заметил следующее: Если до того как нажать кнопку с событием в эдит что-то написать, то событие вообще не выполняется. Если ничего не писать в эдит, а сразу нажать кнопку, всё как выше - меняется value 1 раз, дальше если что-то менять ничего не происходит. Попробуйте пожалуйста сделать этот простой пример у себя. Тут либо глобальный глюк, либо у меня уже что-то не так у меня Исходные данные - html5builder, серверный проект, пустой эдит, кнопка button тип normal и событие javascript на кнопку онклик $("#testedit").attr("value","22222222222222222"); при этом меняйте вручную содержимое эдита и смотрите будет работать после этого событие onclick или нет ... |
Сообщ.
#6
,
|
|
|
у меня нет билдера =) но он будет меняться. Пока я не знаю в чём может быть проблема
|
Сообщ.
#7
,
|
|
|
Если я напишу ручками аналогичный код на чистом html + javascript + jquery он тоже будет работать как надо, а тут шляпа какая-то. Ладно бы вообще не срабатывало событие, но ведь срабатывает ОДИН раз, и то если инпут до этого не трогать. После внесения какиих-либо значений в инпут $("#testedit").attr("value","22222222222222222"); уже не срабатывает
|
Сообщ.
#8
,
|
|
|
Ну проблема может быть где угодно, т.к. чистый код работает: http://jsfiddle.net/GZMnW/ Может JQuery старый у вас?
|
Сообщ.
#9
,
|
|
|
Разобрался с вопросом. Вот здесь похожая ситуация была
https://toster.ru/q/35177 оказалось вот что Attributes vs. Properties The difference between attributes and properties can be important in specific situations. Before jQuery 1.6, the .attr() method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior. As of jQuery 1.6, the .prop() method provides a way to explicitly retrieve property values, while .attr() retrieves attributes. В ваших примерах с attr кстати такая же беда как и у меня была. Значение только 1 раз меняется. При использовании prop вместо attr всё работает как надо. Добавлено А на старых проектах стоял старый jquery и там всё работало нормально с attr, поэтому у меня чуть мозги и не закипели. Надо лучше следить за обновлениями ))) |
Сообщ.
#10
,
|
|
|
Только что перепроверил свой же пример. А ведь действительно меняется только один раз. Вот я слепой
Добавлено ой, опечатался в рейтинге, надеюсь простишь Действительно интересная информация, спасибо |