bett22, так сделайте весь этот блок изначально скрытым (opacity: 0, например), потом при наступлении DOMContentLoaded - монтируйте слайдер и убирайте opacity
Lynn «Кофеман», да, у меня так и есть - это небольшой набор специально для этого написанных классов. Скажем, 3-4. В одном случае мне надо подмешать 1-й класс из этого списка, в другом случае - 2й и 4й, в третьем - вообще ничего не подмешать.
На счет наборов методов тоже думал, но не выходит, т.к. мне нужны и состояния экземпляров, а не только сами методы. Хотя сейчас подумалась одна мысль, попробую реализовать.
Да и черт с ними, с приватными) Хоть бы обычные заработали.
В сущности-то ведь история рабочая, смотрите - самый первый пример в документации - это именно то, что мне нужно. И там все нормально с доступом к внутренним свойствам обоих классов (основного и примешиваемого). Но только мне нужно примешать более одного класса. И я не знаю заранее, что это будут за классы и в каком количестве. Если первый пример из документации работает, то должно работать и для нескольких классов. По сути нужно как-то подружить пример из самог опервого раздела с примером из раздела "Alternative Pattern". И я не понимаю, как именно.
Lynn «Кофеман», почему странное? Обычный способ обойти невозможность множественного наследования. Кейс практически из документации, раздел Alternative pattern. Там как раз и описано копирование ("примешивание") свойств из "классов-доноров" к основному классу. Проблема в том, что методы копируются, а свойства - нет, и методы не имеют доступа к внутренним свойствам (не только приватным, а и самым обычным). Вот эту проблему и хотелось бы решить. Возможно, не таким способом, каким я пытаюсь, но суть именно в этом - добавить к экземпляру класса те или иные методы других классов. И не просто статические методы, а с доступом к состоянию инстансов этих "классов-доноров". Какие это будут классы - заведомо неизвестно, т.е. это весьма динамическая история.
Andrey Vasilev, зачем же так далеко забегать?) У человека речь не идет про создание амазона, ему просто надо понять, как стейт менять (ну или стор - из вопроса не очень понятно).
В ls уместно держать инфу о корзине на случай перезагрузки страницы. Ну и да, необязательно туда класть весь объект товара, достаточно id и количества. Правда, тогда корзина будет дольше грузиться - придется взять айдишники товаров, сделать запрос на бэк, получить ответ и отрендерить. Для простенького магазина это излишне, быстрее и удобнее восстановить корзину из ls. В этом смысле ls и должен быть источником истины для корзины (и ее стора).
okha22, а как выглядит обработчик на клик по этой самой кнопке? Он как-то связан с #model? Если да, то скорей всего дело в том, что вы переписали содержимое #model (т.е. по сути удалили связанный с кнопкой элемент), и теперь кнопке нечего обрабатывать. То, что положено в #model - это уже новый элемент, о котором кнопка ничего не знает.
UPD. Хотя нет, там, похоже, просто косяк с двойным присвоением стилей. Если открыть Elements и посмотреть, что происходит при клике - то видно, что кнопке постоянно присваивается aria-expanded="false", и выпадающий список всегда остается display: none
WbICHA, я, кажется, не спрашивал, что он из себя представляет. Я спрашивал, есть ли ситуации, когда он ведёт себя иначе, чем сигнатура индекса. Точнее, не он сам, а сущности, типизированные им.
function checkUrl(url) {
const pattern = /((^http|https):\/\/)|(^www+\.)([a-z0-9-]+((\.[a-z0-9-]+)+)?)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return pattern.test(url)
}
Не идеально, конечно, т.к. что-нибудь вроде 'www.wwwwww.google.com' - тоже пройдет, да и ваш последний пример, если к нему добавить www. - тоже проканает. Но с точки зрения здравого смысла - очень мало шансов, что что-то подобное в один прекрасный день действительно придет с бэка. А если и придет - то мир не перевернется) Но вот строк вида 'www.и-так-далее.com' там реально навалом по факту, и с ними надо как-то работать.