methods: {
classes: obj => ({
'current-active': obj.progress.current > 0,
}),
...
},:class="classes(cutLine)"
chunkSize = 2
chunksNum = len(string) - chunkSize + 1
chunks = [ string[i:i + chunkSize] for i in range(0, chunksNum) ]
const input = document.querySelector('input');
const itemClass = 'word';
const blockClass = 'block';input.addEventListener('input', e => {
const val = +e.target.value;
document.querySelectorAll(`.${itemClass}`).forEach(n => {
n.closest(`.${blockClass}`).hidden = +n.innerText < val;
});
});.hidden {
display: none;
}input.oninput = function() {
const val = Number(this.value);
for (const n of document.getElementsByClassName(itemClass)) {
let block = n;
while (!(block = block.parentNode).classList.contains(blockClass)) ;
block.classList.toggle('hidden', Number(n.textContent) < val);
}
};
<Route path="/products" component={Products} />exact.return <h1>Product# {match.slug}</h1>;match.params.slug.
function max(data, key = n => n) {
const getVal = key instanceof Function ? key : n => n[key];
let result = null;
for (const n of data) {
const val = getVal(n);
result = result?.[1] >= val ? result : [ n, val ];
}
return result?.[0];
}const { text } = max(arr, n => n.text.length);
const oldest = max(arr, 'age');
const tableSelector = 'здесь селектор вашей таблицы';
const columnIndices = [ 8, 9, 10 ];
const $rows = $(`${tableSelector} tr`);
// или
const { rows } = document.querySelector(tableSelector);$rows.each((_, n) =>
$('> *', n)
.filter(i => ~columnIndices.indexOf(i))
.remove()
);$rows
.children(`${columnIndices.map(n => `:nth-child(${-~n})`)}`)
.detach();Array.prototype.forEach.call(rows, function(n) {
for (let i = n.cells.length; i--; this.has(i) && n.deleteCell(i)) ;
}, new Set(columnIndices));for (const { cells } of rows) {
columnIndices.map(n => cells[n]).forEach(n => n?.remove());
}for (const n of rows) {
n.replaceChildren(...Array.prototype.filter.call(
n.cells,
(_, i) => !columnIndices.includes(i)
));
}
function getWeekdaysOfMonth(year, month) {
const date = new Date(year, --month, 1);
const result = [];
while (date.getMonth() === month) {
result.push(date.toLocaleString('ru-RU', {
month: 'long',
day: 'numeric',
weekday: 'long',
}));
date.setDate(date.getDate() + 1);
}
return result;
}const weekdaysOfDecember2020 = getWeekdaysOfMonth(2020, 12);но как поступить если я не хочу забирать дни недели из стандартного объекта. а взять из их своего массива?
const weekdays = [
'воскресенье',
'это понедельник',
'а это вторник',
'конечно же среда',
'четверг',
'пятница - прямо после четверга',
'суббота, рабочая неделя окончена',
];
const getWeekdaysOfMonth = (year, month) => Array.from(
{ length: new Date(year, month--, 0).getDate() },
(n, i) => {
const d = new Date(year, month, i + 1);
return d.toLocaleString('ru-RU', {
month: 'long',
day: 'numeric',
}) + ', ' + weekdays[d.getDay()];
});const weekdaysOfFebruary2021 = getWeekdaysOfMonth(2021, 2);
document.querySelector('.products__body').addEventListener('click', e => {
const item = e.target.closest('.card-preview__item');
if (item) {
e.preventDefault();
const { srcset } = item.querySelector('source');
item.closest('.card').querySelector('.card-head__image source').srcset = srcset;
}
});
function merge(...$arrays) {
$result = [];
foreach ($arrays as $arr) {
foreach ($arr as $key => $values) {
if (!isset($result[$key])) {
$result[$key] = [];
}
for ($i = 0; $i < count($values); $i++) {
$result[$key][$i] = ($result[$key][$i] ?? 0) + $values[$i];
}
}
}
return $result;
}
$arr = merge($arr1, $arr2);
нужно отлавливать дата атрибуты и если эти дата атрибуты совпадают с дата атрибутами других блоков то вешать класс на блоки
on: {
slideChange() {
const index = this.realIndex;
document.querySelectorAll('.lol').forEach((n, i) => n.classList.toggle('active', i === index));
},
},.clients__picture все .lol, вырезаете обработчик slideChange, добавляетеpagination: {
el: '.clients__picture',
bulletClass: 'lol',
bulletActiveClass: 'active',
renderBullet: (index, className) => `<div class="${className}">${index + 1}</div>`,
},
For DOM trees which represent HTML documents, the returned tag name is always in the canonical upper-case form.
if(str.tagName == 'ul') {} else if (str.tagName == 'li') {str, что за странный выбор имени? Там же элемент, а не строка.elem.append('li');for (let el of strLi) { el.addEventListener('click',func); };
func вынесено за пределы текущей функции, иначе бы при каждом клике всем существующим li добавлялся новый обработчик.li, на свежесозданных li клик обрабатываться не будет (касается и тех, что изначально существуют).li - так зачем назначать отдельный обработчик клика? То, что делаете в func, вполне можно делать прямо тут.document.querySelector('ul').addEventListener('click', e => {
const t = e.target;
const ct = e.currentTarget;
t.insertAdjacentHTML('beforeend', ct === t ? '<li>text</li>' : '!');
});