у меня много столбцов, плюс к этому много таблиц, и логику фильтра нужно применить ко всему
select.innerHTML = [
{ val: 69, optionText: 'hello, world!!', selectText: 'HELLO, WORLD!!' },
{ val: 187, optionText: 'fuck the world', selectText: 'FUCK THE WORLD' },
{ val: 666, optionText: 'fuck everything', selectText: 'FUCK EVERYTHING' },
].map(n => `
<option value="${n.val}" hidden>${n.selectText}</option>
<option value="${n.val}">${n.optionText}</option>
`).join('');
select.addEventListener('change', e => e.target.value = e.target.value);
const source = document.querySelector('.menu');
const target = document.querySelector('#parent');
for (const n of source.children) {
target.appendChild(n.cloneNode(true));
}
// или
source.querySelectorAll(':scope > *').forEach(n => {
target.insertAdjacentElement('beforeend', n.cloneNode(true));
});
// вложенные узлы копии добавляем в целевой элемент
target.append(...source.cloneNode(true).children);
// или, заменяем целевой элемент копией исходного
target.replaceWith(source.cloneNode(true));
target.innerHTML = source.innerHTML;
// или
target.outerHTML = source.outerHTML;
function getDate(day, year = new Date().getFullYear()) {
const date = new Date(year, 0, day);
return [
date.getDate(),
[
'январь', 'февраль', 'март', 'апрель', 'май', 'июнь',
'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'
][date.getMonth()],
[ 'вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб' ][date.getDay()],
].join(' ');
}
getDate(115, 2019) // "25 апрель чт"
const getDate = (day, year = new Date().getFullYear()) =>
new Date(year, 0, day).toLocaleString('ru-RU', {
day: 'numeric',
month: 'long',
weekday: 'short',
});
getDate(115, 2019) // "чт, 25 апреля"
.close-panel
, чтобы только что удалённый класс не добавлялся обратно (при обработке события в родительском элементе):$('.close-panel').on('click', function(e) {
e.stopPropagation();
$('.add-caption').removeClass('active');
});
.close-panel
, а в обработчике клика по .add
добавляйте или убирайте класс в зависимости от того, откуда пришло событие:$('.add').on('click', function(e) {
$('.add-caption').toggleClass('active', !$(e.target).hasClass('close-panel'));
});
const toDelX = new Set;
const toDelY = new Set;
X.forEach((n, i) => {
if (X2.includes(n) && Y2.includes(Y[i])) {
toDelX.add(n);
toDelY.add(Y[i]);
}
});
X2.splice(0, X2.length, ...X2.filter(n => !toDelX.has(n)));
Y2.splice(0, Y2.length, ...Y2.filter(n => !toDelY.has(n)));
Но как снять эту прослушку потом в unbind?
bind(el, options) {
const handler = () => { ... };
window.addEventListener('scroll', handler);
el.scrollHandler = handler;
},
unbind(el) {
window.removeEventListener('scroll', el.scrollHandler);
},
const map = new Map();
window.addEventListener('scroll', function(e) {
[...map.entries()].forEach(([ el, { className, deleteClass } ]) => {
...
});
});
bind(el, options) {
map.set(el, {
className: options.value,
deleteClass: options.arg === 'delete',
});
},
unbind(el) {
map.delete(el);
},
let autoplayInterval = null;
function startAutoplay() {
if (!autoplayInterval) {
autoplayInterval = setInterval(plusSlide, 1000);
}
}
function stopAutoplay() {
clearInterval(autoplayInterval);
autoplayInterval = null;
}
$keys = array_keys($auto);
$header = implode("", array_map(function($n) {
return "<th>$n</th>";
}, $keys));
$rows = implode("", array_map(function($i) use($auto, $keys) {
return "<tr>".implode("", array_map(function($n) use($auto, $i) {
return "<td>".$auto[$n][$i]."</td>";
}, $keys))."</tr>";
}, range(0, count($auto[$keys[0]]) - 1)));
echo "<table>$header$rows</table>";
v-model="searchRegion"
v-model="country.searchRegion"
data: () => ({
width: 0,
}),
created() {
const onResize = () => this.width = window.innerWidth;
onResize();
window.addEventListener('resize', onResize);
this.$on('hook:beforeDestroy', () => window.removeEventListener('resize', onResize));
},
data: () => ({
isWidthOK: false,
}),
created() {
const mql = window.matchMedia('(max-width: 600px)');
const onChange = () => this.isWidthOK = mql.matches;
onChange();
mql.addEventListener('change', onChange);
this.$on('hook:beforeDestroy', () => mql.removeEventListener('change', onChange));
},
function getMonthAverage($data, $month) {
$monthData = array_filter(array_column($data, $month), function($n) {
return $n > 0;
});
$count = count($monthData);
return $count ? array_sum($monthData) / $count : 0;
}
$juneAverage = getMonthAverage($data, 'june');
$allAverage = array_reduce(array_keys($data[0]), function($acc, $n) use($data) {
$acc[$n] = getMonthAverage($data, $n);
return $acc;
}, []);