const className = 'price';.const elements = document.querySelectorAll(`.${className}`);
// или
const elements = document.getElementsByClassName(className);const getVal = el => parseFloat(n.textContent);
// или
const getVal = el => Number(el.innerText.split(' ')[0]);
// или
const getVal = el => +el.innerHTML.match(/\d+(\.\d+)?/)[0];const sum = Array.prototype.reduce.call(
elements,
(acc, n) => acc + getVal(n),
0
);
// или
let sum = 0;
for (const n of elements) {
sum += getVal(n);
}
// или
let sum = 0;
for (let i = 0; i < elements.length; i++) {
sum += getVal(elements[i]);
}
// или
const sum = eval(Array.from(elements, getVal).join('+')) || 0;
// или
const sum = (function get(i, n = elements.item(i)) {
return n ? getVal(n) + get(i + 1) : 0;
})(0);
Но что возвращает return this.on(...); ? Если ничего, то в чем суть?
Returns a reference to the EventEmitter, so that calls can be chained
$(".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 keys = new Set(target.map(key));
sources.forEach(arr => arr.forEach(n => {
const k = key(n);
if (!keys.has(k)) {
keys.add(k);
target.push(n);
}
}));
return target;
}
add(n => n.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);
});