Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 03.08.2017, 13:42
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

rdPavel, тут написана причина:
https://learn.javascript.ru/introduc...войство
Ответить с цитированием
  #22 (permalink)  
Старый 03.08.2017, 18:39
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Да
Ответить с цитированием
  #23 (permalink)  
Старый 03.08.2017, 19:13
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Nexus,

Спасибо за инфу!
Почитал, почитал, пока еще не могу догнать точное решение, буду разбираться.
Нужно просто Ваш код доработать...
Ответить с цитированием
  #24 (permalink)  
Старый 03.08.2017, 20:35
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Nexus,

Браузер пишет Uncaught TypeError: невозможно прочитать свойство undefined неопределенного
В HTMLSelectElement.getAvtoList (cp_avto.js: 9)

var countryCode = sel.options[sel.selectedIndex].value;
Ответить с цитированием
  #25 (permalink)  
Старый 04.08.2017, 08:00
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Rise,
Да нет, это перевод.
Ответить с цитированием
  #26 (permalink)  
Старый 04.08.2017, 08:18
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Nexus,
Не могу понять, в одном месте пишет:
Методы addEventListener и removeEventListener являются современным способом назначить или удалить обработчик, и при этом позволяют использовать сколько угодно любых обработчиков.

В другом месте:
addEventListener() для одного и того же объекта с теми же самыми аргументами не дает никакого эффекта - функция-обработчик регистрируется только один раз и повторные вызовы не влияют на порядок вызова обработчиков.

Чего то я недопонимаю
Ответить с цитированием
  #27 (permalink)  
Старый 04.08.2017, 09:23
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

rdPavel, скорее всего речь идет об этом:
<div id="block"></div>
<script>var block=document.getElementById('block'),
i=2;
func=function(){alert(++i);},
block.addEventListener('click',function(){alert(1);},false);
block.addEventListener('click',function(){alert(2);},false);
block.addEventListener('click',func,false);
block.addEventListener('click',func,false);

block.dispatchEvent(new Event('click'));
</script>

Алерт будет вызван только трижды со значениями 1-3, четвертого вызова не произойдет.
Строки 5-6 - навешивание уникальных анонимных функций в кач-ве обработчика.
Строки 7-8 - навешивание одной и той же функции на один и тот же элемент, и на одно и то же событие.

Суть в том, что в строках 5-6 функции-обработчики уникальны, а в строках 7-8 в кач-ве обработчика выступает одна и та же функция, записанная в переменную.
Ответить с цитированием
  #28 (permalink)  
Старый 04.08.2017, 10:15
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Nexus,

Я приблизительно понимаю о чем речь, но не могу догнать как склеить и реализовать с моими данными.

Еще вопрос:
Почему вот это срабатывает:
<script>
cp_id_387.onclick = function() { alert("Привет"); };
</script>

а

cp_id_387.onclick = function() { onchange="getAvtoList(this)"; };
cp_id_387.onclick = function() { getAvtoList(this); };
cp_id_387.onclick = function() { getAvtoList; };

Ноль эмоций...

Уже что-то запутался я
Ответить с цитированием
  #29 (permalink)  
Старый 04.08.2017, 10:28
Аспирант
Отправить личное сообщение для rdPavel Посмотреть профиль Найти все сообщения от rdPavel
 
Регистрация: 02.08.2017
Сообщений: 33

Короче только такое нашел решение:
Больше в голову ничего не лезет, может я зациклился

<?php
ob_start();
cp_show_form( $category->term_id, $listing );
$select=ob_get_contents();
ob_end_clean();
$select=str_replace('cp_id_387','cp_id_387" onchange="getAvtoList(this)',$select);
$select=str_replace('cp_state','cp_state" onchange="getCityList(this)',$select);
echo $select;
?>

Оба поля Селекта работают на ура.

Не знаю насколько это правильно но пока так.
Нужно проверить на всех браузерах.
Ответить с цитированием
  #30 (permalink)  
Старый 04.08.2017, 10:35
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

rdPavel, потому что у тебя там бред написан.
cp_id_387.onclick = function() { onchange="getAvtoList(this)"; };
cp_id_387.onclick = function() { getAvtoList(this); };
cp_id_387.onclick = function() { getAvtoList; };

Строка 1 - Навешиваешь обработчик на событие «click», обработчик перезаписывает значение свойство «onchange» глобального объекта «window» (а было ли свойство вообще объявлено?).
Строка 2 - перезаписываешь обработчик события «click» элемента, тут почти все верно. В твоём контексте, я уверен, this будет эквивалентно window (поправьте, если ошибаюсь).
Строка 3 - еще раз перезаписываешь обработчик события «click» элемента. Сам обработчик - чушь. Даже не знаю как это прокомментировать...

Чтобы навесить несколько обработчиков на 1 событие используй метод «addEventListener».
В первой строке ты попытался (вероятно) повесить обработчик на событие «change», должно было получиться так:
cp_id_387.onchange=function(e){getAvtoList(e.target);};//Или с addEventListener

Во второй строке, чтобы передать функции «getAvtoList» сущность, в отношении которой было произведено событие, нужно было получить событие и обратиться к его свойству «target», т.е. примерно так:
cp_id_387.onclick=function(e){getAvtoList(e.target);};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить проблему! Очень прошу помочь! sizdim Элементы интерфейса 2 06.04.2015 07:59
Помогите решить проблему со скроллом Jigan2 jQuery 0 20.03.2015 10:42
Помогите решить проблему Ingiborn Общие вопросы Javascript 0 10.07.2014 13:12
History API. Помогите решить проблему InviS Events/DOM/Window 2 16.10.2011 14:34
Помогите решить проблему felixfix Общие вопросы Javascript 4 21.04.2011 12:00