<button id="button-1"$('#botton-1').on('dblclick',Uncaught ReferenceError: $ is not defined
$('#example thead tr:eq(1) th').slice(2).each(... дальше всё как былоне проканало, то есть визуально все как надо но по факту поиск из фильтра стал работать не в той колонке
table.column(i), а table.column(i + 2). Или не полагаться на передаваемый индекс, а вычислять его самостоятельно, что-то вроде const index = $(this).closest('th').index().
const result = [];
for (const n of objects) {
if (!ids.includes(n.id)) {
result.push(n);
}
}const result = [];
COLLECT_OBJECTS:
for (let i = 0; i < objects.length; i++) {
for (let j = 0; j < ids.length; j++) {
if (ids[j] === objects[i].id) {
continue COLLECT_OBJECTS;
}
}
result[result.length] = objects[i];
}const result = objects.filter(function(n) {
return !this.has(n.id);
}, new Set(ids));const result = (function get(i, n = objects[i]) {
return n
? [].concat(~ids.indexOf(n.id) ? [] : n, get(-~i))
: [];
})(0);const result = [...ids.reduce(
(acc, n) => (acc.delete(n), acc),
new Map(objects.map(n => [ n.id, n ]))
).values()];
const count = arr.reduce((acc, n) => (acc[n.revitid] = (acc[n.revitid] || 0) + 1, acc), {});
const unique = Object.entries(count).filter(n => n[1] === 1).map(n => n[0]);
const newArr = arr.filter(n => unique.includes(n.revitid));const duplicate = arr.reduce((acc, n) => (acc[n.revitid] = acc.hasOwnProperty(n.revitid), acc), {});
const newArr = arr.filter(n => !duplicate[n.revitid]);const newArr = arr.filter(function(n) {
return !this.get(n.revitid);
}, arr.reduce((acc, { revitid: n }) => acc.set(n, acc.has(n)), new Map));const newArr = arr.filter((n, i, a) => a.filter(m => m.revitid === n.revitid).length === 1);const newArr = Object
.values(arr.reduce((acc, n) => (acc[n.revitid] = acc[n.revitid] ? 1 : n, acc), {}))
.filter(n => n !== 1);const newArr = Object
.values(arr.reduce((acc, n) => ((acc[n.revitid] = acc[n.revitid] || []).push(n), acc), {}))
.flatMap(n => n.length === 1 ? n : []);
const getImageSizes = src => new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => resolve({ width: img.width, height: img.height });
img.onerror = reject;
img.src = src;
});
getImageSizes(здесь путь к вашей картинке).then(sizes => {
...
});
const chunks = (arr, chunkSize) =>
arr.reduce((acc, n, i) => (
(i % chunkSize) || acc.push([]),
acc[acc.length - 1].push(n),
acc
), []);
const data = [...Array(12).keys()];
const chunkSize = 2;
const html = chunks(data, chunkSize)
.map(n => `<div>${n.map(m => `<div>${m}</div>`).join('')}</div>`)
.join('');
let index = -1;
setInterval(radios => {
radios.item(index = (index + 1) % radios.length).click();
}, 1000, document.querySelectorAll('.gallery-colors input'));(function click(radios) {
const radio = radios[-~radios.findIndex(n => n.checked)] || radios[0];
radio.checked = true;
radio.dispatchEvent(new Event('change', { bubbles: true }));
setTimeout(click, 1000, radios);
})([...document.getElementsByName('bmw')]);
<div class="modal-content">, например.
const valueToDel = 'value1';for (const n of Object.entries(obj)) {
if (n[1] === valueToDel) {
delete obj[n[0]];
}
}const newObj = Object
.entries(obj)
.reduce((acc, [ k, v ]) => (v !== valueToDel && (acc[k] = v), acc), {});
// или
const newObj = Object.fromEntries(Object
.entries(obj)
.filter(n => n[1] !== valueToDel)
);
let workingLine = function() {firstLetter = workingLine[0]firstLetter.match( /[a-z]|[а-я]/g )0, которого нет, т.е., получаете undefined, и у этого undefined пытаетесь вызвать строковый метод.
.b-popup появляется, он закрывает собой .b-block, возникает событие mouseleave, и его надо скрывать. А как он скрылся - его надо снова показывать, потому что на .b-block возникает событие mouseenter. Ну вот так оно по кругу и происходит.pointer-events: none для .b-popup. Или поместите .b-popup внутрь .b-block.
Внутри цикла не работает setTimeout
const wait = time => new Promise(r => setTimeout(r, time));(async () => {
for (const n of [ 1, 2, 3, 4, 5 ]) {
console.log(n);
await wait(1000);
}
})();[ 1, 2, 3, 4, 5 ].reduce((promise, n) => promise
.then(() => console.log(n))
.then(() => wait(1000))
, Promise.resolve());
в Storage сохраняются введенные значения, а в инпут - нет
$('#text')
.val(localStorage.getItem('key') || '')
.on('input', e => localStorage.setItem('key', e.target.value));
.ranging {
display: none;
}
.ranging.opened {
display: block;
}const buttonSelector = '.selector';
const contentSelector = '.ranging';
const activeClass = 'opened';
const toggleContent = (contents, index) =>
contents.forEach((n, i) => n.classList.toggle(activeClass, i === index));
// делегирование, назначаем обработчик клика один раз для всех кнопок
// наверное, у них есть какой-то общий предок, тогда вместо документа
// вешать обработчик следует на него:
// document.querySelector('селектор_контейнера_с_кнопками').addEventListener(...
document.addEventListener('click', e => {
const button = e.target.closest(buttonSelector);
if (button) {
const buttons = document.querySelectorAll(buttonSelector);
const index = Array.prototype.indexOf.call(buttons, button);
toggleContent(document.querySelectorAll(contentSelector), index);
}
});
// или, назначаем обработчик клика индивидуально каждой кнопке
const onClick = function(e) {
toggleContent(this, +e.currentTarget.dataset.index);
}.bind(document.querySelectorAll(contentSelector));
document.querySelectorAll(buttonSelector).forEach((n, i) => {
n.dataset.index = i;
n.addEventListener('click', onClick);
});
.tab-content__item {
display: none;
}
.tab-content__item.active {
display: list-item;
}
.tab-header__item.active {
color: red;
}const headerSelector = '.tab-header__item';
const contentSelector = '.tab-content__item';
const activeClass = 'active';
// делегирование, обработчик клика добавляется один раз для всех хедеров;
// контент, соответствующий нажатому хедеру, определяем через равенство data-атрибутов
document.addEventListener('click', e => {
const header = e.target.closest(headerSelector);
if (header) {
const { tab } = header.dataset;
const toggle = n => n.classList[n.dataset.tab === tab ? 'toggle' : 'remove'](activeClass);
document.querySelectorAll(headerSelector).forEach(toggle);
document.querySelectorAll(contentSelector).forEach(toggle);
}
});
// или, обработчик клика добавляется каждому хедеру индивидуально;
// контент, соответствующий нажатому хедеру, определяем по равенству индексов
const headers = document.querySelectorAll(headerSelector);
const contents = document.querySelectorAll(contentSelector);
headers.forEach(n => n.addEventListener('click', onClick));
function onClick() {
const index = Array.prototype.indexOf.call(headers, this);
const toggle = (n, i) => n.classList[i === index ? 'toggle' : 'remove'](activeClass);
headers.forEach(toggle);
contents.forEach(toggle);
}