const elem = Array
.from(document.querySelectorAll('.wrap .price'))
.find(n => n.textContent === price);
if (elem) {
...
const elems = Array.prototype.filter.call(
document.querySelectorAll('.wrap .price'),
n => n.innerText.includes(price)
);
if (elems.length) {
...
$(".account_ads_more_block").toggleClass("active");
$(this).next(".account_ads_more_block").toggleClass("active");
fullField[field_name].value = element[field_name] || 'NULL';
fullField[field_name] = Object.assign(
{},
fullField[field_name],
{ value: element[field_name] || 'NULL' },
);
$this.elements.style.transform = "scale(0)"; $this.elements.style.transform = "scale(1)";
$this.elements.offsetTop;
, например (ага, просто обращение к свойству, ничего более) - будет работать как вы хотите. М-м-магия? Никак нет. Рекомендую к прочтению. const found = Object.keys(obj).filter(n => n.toLowerCase().includes(search));
const SHOW = 2;
const button = document.querySelector('button');
const out = document.querySelector('#out');
button.addEventListener('click', showFound);
showFound();
function showFound() {
out.insertAdjacentHTML('beforeend', found
.splice(0, SHOW)
.map(n => `<div>${n}</div>`)
.join('')
);
button.disabled = !found.length;
}
const fullOptions = Object.assign({}, defaultOptions, options);
// или
const fullOptions = { ...defaultOptions, ...options };
const concat = (key, ...arrs) =>
Object.values([]
.concat(...arrs)
.reduce((acc, n) => (acc[n[key]] = acc[n[key]] || n, acc), {})
);
const newFirst = concat('hour', first, hours);
function add(key, target, ...sources) {
const unique = new Set(target.map(n => n[key]));
for (const arr of sources) {
for (const n of arr) {
const k = n[key];
if (!unique.has(k)) {
unique.add(k);
target.push(n);
}
}
}
return target;
}
add('hour', first, hours).sort((a, b) => a.hour - b.hour); // да, придётся делать сортировку вручную
$('#courses').hover(function() {
$('#coursesHeader').dequeue().show();
}, function() {
$('#coursesHeader').delay(1000).queue(function() {
$(this).hide().dequeue();
});
});
let timeout = null;
$('#courses').hover(function() {
clearTimeout(timeout);
$('#coursesHeader').show();
}, function() {
timeout = setTimeout(() => $('#coursesHeader').hide(), 1000);
});
$('<div class="list" />')
.append([...Array(100)].map((n, i) => `<div>Item ${i}</div>`).join(''))
.appendTo('body');
const li = $('.list').children();
let selected = $();
$(window).on('keydown', function(e) {
e.preventDefault();
const [ method, index ] = ({
ArrowUp: [ 'prev', -1 ],
ArrowDown: [ 'next', 0 ],
})[e.key] || [];
if (method) {
const next = selected.removeClass('selected')[method]();
selected = (next.length ? next : li.eq(index)).addClass('selected');
$(this).scrollTop(selected.position().top);
}
});
localStorage.setItem('time', ticks);
// если значение отсутствует, то будет установлен 0, т.к. +null === 0
var ticks = +localStorage.getItem('time');
option:selected
, суммируя data-price
и закидывая data-name
в массив:$('.select-spa').on('change', function() {
const data = $('option:selected').get().reduce((acc, n) => {
acc.names.push(n.dataset.name);
acc.price += +n.dataset.price;
return acc;
}, { names: [], price: 0 });
$('.chose').text(data.names.join(', '));
$('.to-pay .result-select').val(data.price);
});
$('.price-inp').change(function() {
const val = Math.round($(this).val() / 100) * 100;
$(this).add('.result').val(val);
});
const details = document.querySelectorAll('[name="pakdetail"]');
const colors = document.querySelectorAll('[name="pakcolor"]');
const onChange = enableColors.bind(null, true);
enableColors(false);
function enableColors(enabled) {
const method = `${enabled ? 'remove' : 'add'}EventListener`;
details.forEach(n => n[method]('change', onChange));
colors.forEach(n => n.disabled = !enabled);
}
const result = [].concat(...arr);