Слушатель для событий dragenter и dragover используются для указания допустимых drop-целей, то есть мест, где могут быть сброшены перетаскиваемые элементы. Большинство областей веб-страницы или приложения не являются допустимыми местами для сброса данных. Таким образом, обработка этих событий по умолчанию не допускает сброса перетаскиваемых данных.
Если вы хотите разрешить сброс переносимых данных, вы должны предотвратить обработку по умолчанию, отменив оба события dragenter и dragover. Это можно сделать, либо вернув false из определенных атрибутом слушателя событий, либо вызвав метод preventDefault() событие.
По событию scroll добавляется класс, нужно ли добавлять проверку на наличие класса, чтобы логика его добавления была отключена и не срабатывала каждый скролл
console.log( (a = 4, a = a + 10, a) )
// 14
a[i%2] += b
a[i%2]
значение переменной b
и возвращает массивзаставить сайт изменить dom структуру после получения ответа от сервера
function offsetToMs(s) {
const [h, m] = s.replace(/utc/i, '').split(':').map(x => Number(x.replace(/\D/, '')))
const ms = (h * 60 * 60 * 1000) + (m * 60 * 1000)
return s.includes('-') ? -ms : ms
}
off = offsetToMs("UTC+05:30")
console.log( new Date(new Date().getTime() + off) )
когда я добавил второй таймаут
for (let i = 0; i < 5; i++) {
setTimeout(() => console.log('timeout #1', i), i * 1000)
setTimeout(() => console.log('timeout #2 delayed 500ms', i), i * 1000 + 500)
}
b.filter(bb => !a.includes(bb))
a.forEach((element, index) => {
...
});
<input type="radio"
name="option[<?php echo $option['product_option_id']; ?>]"
value="<?php echo $option_value['product_option_value_id']; ?>"
<?php if ($option_value === array_key_first($option['product_option_value'])) echo 'checked'; ?>
/>
посмотри в консоли браузера стили, это НЕ горизонтальная перемотка, а через css анимируется ширина width блоков, страница поделена на левый/правый и в нужный момент подставляется ширина нужному блоку
string = 'acj34298a'
console.log(string.length, new Set([...string]).size)
// 9 8