Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Открыть новую тему     Написать ответ в эту тему

Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
То есть, выход один: просто вызывать функцию artistName()? И только так? Блин, мой код всегда выглядит как костыли, перемотанные скотчем, но это...

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 00:14 19-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanatory

Цитата:
просто вызывать функцию artistName()

да
 

Цитата:
но это

я не понимаю в чем ваша проблема. это нормальный код для javascript

Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 00:15 19-11-2018
Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Ясно.
Спасибо, Mavrikii. Вы как всегда помогли.  
Извините за моё нытьё и архинубство.

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 00:17 19-11-2018 | Исправлено: Sanatory, 00:19 19-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanatory
если хотите короче, то можно написать так

Код:
var artistName = function (){
  var artistName;
  return (artistName = document.querySelector('.generic-page > .artist')) ? artistName.textContent : false;
}

Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 00:23 19-11-2018
Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Благодарю за "утешительный приз"
Но меня интересовала именно возможность с помощью переменной всякий раз возвращать значение функции. Эх, не судьба.
Зато Вы меня успокоили, а то я начал сомневаться в своих способностях гуглежа.

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 00:36 19-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanatory

Цитата:
Но меня интересовала именно возможность с помощью переменной всякий раз возвращать значение функции

ну есть такая возможность, как и во многих языках - получение строкового представления объекта (ну или __toString() с подчеркиванием или без)
но там потребуется доп код все равно - http://jsfiddle.net/t3x6wf2z/
 
ps: в современной версии JS есть возможность делать это и с помощью иных "магических" методов - через get
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
ну и потом - https://medium.com/@alonronin/magic-methods-in-javascript-meet-proxy-65e6305f4d3e

Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 00:43 19-11-2018 | Исправлено: Mavrikii, 01:11 19-11-2018
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanatory

Цитата:
надо каждый раз получать textContent
Что это значит, информация периодически обновляется на открытой странице или каждый раз при обновлении страницы?

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 01:04 19-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
внимательнее

Цитата:
информация периодически обновляется на открытой странице


Цитата:
Что надо сделать, чтобы функция всякий раз возвращала переменной новые значения после обновления div аякс-запросом???  


Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 01:06 19-11-2018
Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ну есть такая возможность, как и во многих языках - получение строкового представления объекта (ну или __toString() с подчеркиванием или без)
но там потребуется доп код все равно - http://jsfiddle.net/t3x6wf2z/
 
ps: в современной версии JS есть возможность делать это и с помощью иных "магических" методов - через get
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
ну и потом - https://medium.com/@alonronin/magic-methods-in-javascript-meet-proxy-65e6305f4d3e

Спасибо большое, завтра изучу обязательно.

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 01:14 19-11-2018
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что надо сделать, чтобы функция всякий раз возвращала переменной новые значения после обновления div аякс-запросом???  
Тогда надо видимо повесить слушатель на изменение элемента или на изменение страницы и проверяя нужный элемент и сравнивая значения получать новые данные. Я так недавно делал на ютубе, поскольку там нет перехода по страницам, а только обновление содержания элементов.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 01:23 19-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
ему не нужен слушатель, он получает данные тогда, когда ему хочется. речь вообще шла не об этом.
он просто не хочет писать явным образом вызов функции (то есть дописывать ()), только и всего.
зачем и почему - ему решать.

Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 01:24 19-11-2018 | Исправлено: Mavrikii, 01:25 19-11-2018
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Тогда я ничего не понял, там вроде повторный запуск функции был, ладно не буду мешать.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 01:26 19-11-2018 | Исправлено: VVL99, 02:18 29-11-2018
jekonya

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, друзья!
Есть такой код: http://jsfiddle.net/0bqmoxLy/
Когда я навожу мышью на "Категория 2" и жму в ней на любую из выпавших подкатегорий, то после нажатия срабатывает скрипт и все подкатегории скрываются - это так и задумано. Но вот почему после повторного навода курсора на "Категория 2" не происходит повторное выпадение подкатегорий? Ведь в CSS прописано:

Код:
#list li:hover .sublist_active {display:block;}

Я конечно сделал костыль через mouseenter/mouseleave, но что-то мне это не нравится. Или по другому тут никак?

Всего записей: 18 | Зарегистр. 16-05-2011 | Отправлено: 15:32 21-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jekonya
ну так выставили же по клику display none у саблиста.
вот оно и не отображается.

Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 21:08 21-11-2018
jekonya

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Верно, но в стилях же стоит

Код:
#list li:hover .sublist_active {display:block;}

То есть по идее (как я думал) при наведении курсора должно снова отображаться...
 
Но на самом деле я вроде начал понимать почему так, JS оперирует значениями в атрибуте style, а у него вес гораздо выше, чем у моего кода выше, вот и не отображается, я добавил !important
http://jsfiddle.net/1q9bvtuz/
и подменю снова стало появляться, но теперь оно не исчезает при клике по его пункту, блин. Короче порочный круг какой-то и пока без дополнительного JS не могу понять как это решить...

Всего записей: 18 | Зарегистр. 16-05-2011 | Отправлено: 22:05 21-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jekonya

Цитата:
То есть по идее (как я думал) при наведении курсора должно снова отображаться...  

нет. вы кликом выставили style - у него приоритет выше
https://webref.ru/course/css-basics/priority
 

Цитата:
не могу понять как это решить

чего именно вы хотите добиться?

Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 22:07 21-11-2018 | Исправлено: Mavrikii, 22:08 21-11-2018
jekonya

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
нет. вы кликом выставили style - у него приоритет выше

ну да, я об этом же и написал чуть выше, что уже допёр до этого

Цитата:
чего именно вы хотите добиться?

1. Чтобы подменю появлялось при наведении курсора мыши на пункт меню
2. подменю скрывалось после клика по его пункту
3. Подменю снова появлялось при наведении курсора мыши на пункт меню
4. и т.д.
 
Собственно вот так оно должно работать http://jsfiddle.net/8eqwhbLx/
Но тут мне пришлось добавить костыль в JS из mouseenter/mouseleave
Хотя может это и не костыль и тут можно только так или через .hover(), например, что не слаще...
 
ps Ресь идёт именно о пункте "Категория 2", первый пункт "Категория 1" - прошу не рассматривать, у меня там отдельная схема.

Всего записей: 18 | Зарегистр. 16-05-2011 | Отправлено: 22:22 21-11-2018 | Исправлено: jekonya, 22:24 21-11-2018
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jekonya
А если так:

Код:
.sublist_active:active li {
  display: none;
}

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 22:42 21-11-2018
jekonya

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
О, про :active я вообще что-то не подумал, сейчас сделал, да, работает! Спасибо!) Правда почему-то перестал отрабатывать JS, повешенный на кнопки подменю. Но у меня уже 3 часа ночи, голова совсем не варит, завтра буду разбираться. Ну и надо потестить этот :active в разных браузерах, тк вроде он не везде может работать, если его применить не к элементам <a>
 
Mavrikii, VVL99, други, спасибо за участие!)

Всего записей: 18 | Зарегистр. 16-05-2011 | Отправлено: 23:01 21-11-2018
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jekonya

Цитата:
потестить этот :active в разных браузерах, тк вроде он не везде может работать, если его применить не к элементам <a>

Можно попробовать и :focus.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 23:09 21-11-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru