const sortString = str => str
.split(' ')
.map(n => [ n, +/\d/.exec(n) ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0])
.join(' ');
const sortString = str => Array
.from({ length: 9 }, (n, i) => str.match(RegExp(`\\w*${i + 1}\\w*`)))
.filter(Boolean)
.join(' ');
const sortString = str => str && str
.match(/\S+/g)
.reduce((acc, n) => (acc[n.replace(/\D/g, '')] = n, acc), [])
.reduce((acc, n) => acc + (acc && ' ') + n, '');
document.querySelector('.items').addEventListener('click', e => {
const button = e.target.closest('.next');
const item = button && button.closest('.item.active');
if (item) {
item.classList.remove('active');
(item.nextElementSibling || item.parentNode.children[0]).classList.add('active');
}
});
div.innerHTML +="qwe"
+=
- вам кажется, будто бы к содержимому div что-то там добавляется. Это не совсем так - содержимое div полностью перезаписывается. Соответственно, ранее добавленные элементы будут удалены и заменены новыми. А к новым элементам никаких обработчиков вы не привязываете - отсюда и отсутствие вывода в консоль..slice(0, 3)
.aux.select();
сделайтеaux.focus();
aux.setSelectionRange(0, 3);
нужно до плюса скопировать, там не всегда 3 символа может быть
'+'
с помощью indexOf
..match(/[^+]*/)
), или удалите его и то, что после (.replace(/\+.*/, '')
). Promise.all(items.map((item, index) => axios.post(responses[index], item, config)))
const container = document.querySelector('nav');
const itemSelector = '.sidebar-item';
const className = 'selected';
container.addEventListener('click', function(e) {
const item = e.target.closest(itemSelector);
if (item) {
const activeItem = this.querySelector(`.${className}`);
if (activeItem) {
activeItem.classList.remove(className);
}
item.classList.add(className);
}
});
container.addEventListener('click', e => {
const item = e.target.closest(itemSelector);
if (item) {
for (const n of e.currentTarget.querySelectorAll(itemSelector)) {
n.classList.toggle(className, n === item);
}
}
});
const items = container.querySelectorAll(itemSelector);
const onClick = e => items.forEach(n => n.classList.toggle(className, n === e.currentTarget));
items.forEach(n => n.addEventListener('click', onClick));
<div id="progressBar"></div>
<button>green</button>
<button>red</button>
<button>yellow</button>
<button>magenta</button>
<button>aqua</button>
let percent = 0;
const gradientParts = [];
$('button').click(function() {
if (percent < 100) {
const color = $(this).text();
percent++;
gradientParts.push(`${color} ${percent - 1}%`, `${color} ${percent}%`);
const gradient = gradientParts.concat(`#435C91 ${percent}%`, '#435C91 100%');
$('#progressBar').css({
background: `linear-gradient(to right, ${gradient.join(', ')})`,
});
}
});
const rows = 3;
const cols = 5;
const max = 10;
const arr =
Array.from({ length: rows }, () =>
Array.from({ length: cols }, () =>
Math.random() * max | 0
)
);
const sumRows = arr.map(n => n.reduce((acc, m) => acc + m, 0));
const sumCols = (arr[0] || []).map((n, i) => arr.reduce((acc, m) => acc + m[i], 0));
// или
const [ sumRows, sumCols ] = arr.reduce((acc, n, i) => (
n.forEach((m, j) => (acc[0][i] += m, acc[1][j] += m)),
acc
), [ rows, cols ].map(n => Array(n).fill(0)));
интересуют только кастомные маркеры...
...и блоки с описанием этих маркеров
.label-text
переключайте класс у максимально дальних не общих предков input'ов, т.е., у .thumb
. Соответственно, стилизовать надо будет не .label-text.класс
, а .класс .label-text
. Зачем делать именно так? Потому что не придётся переписывать js-код, если вдруг вам завтра захочется кроме .label-text
стилизовать ещё что-то, или решите изменить взаимное расположение элементов.const containerSelector = '.thumb';
const inputSelector = 'input[id^="input-"]';
const activeClass = 'active';
$(containerSelector).on('input', inputSelector, function(e) {
$(e.delegateTarget).toggleClass(activeClass, !!this.value);
});
const onInput = ({ target: t, currentTarget: ct }) =>
t.matches(inputSelector) && ct.classList.toggle(activeClass, !!t.value);
document.querySelectorAll(containerSelector).forEach(n => {
n.addEventListener('input', onInput);
});
for (let j = 1; j <= this.players; j++) {
this.card.dataset.playerId = j; // а тут устанавливаем playerId. Но он у меня постоянно одинаковый
}
this.card.dataset.playerId = i <= this.players ? i : ((Math.random() * this.players | 0) + 1);
<div id="app" @click="onClick">
...
new Vue({
el: '#app',
methods: {
onClick(e) {
if (e.target.tagName === 'A') {
e.preventDefault();
window.open(e.target.getAttribute('href'));
}
},
...
},
...
});
$('.cart-window ul').each
на $('.cart-window ul .item').each
, а $(this).find('.item span').text()
замените на $(this).find('span').text()
.Этот код вместо результата выводит undefined.
$('.news-full-text img')
.wrap('<div class="image"></div>')
.after('<div class="image-social">социальные кнопки</div>');
$('.news-full-text img').replaceWith(function() {
return `
<div class="image">
${this.outerHTML}
<div class="image-social">социальные кнопки</div>
</div>`;
});
$('.news-full-text').html((i, html) => html.replace(/<img .*?>/g, m => `
<div class="image">
${m}
<div class="image-social">социальные кнопки</div>
</div>
`));