document.querySelector('button').addEventListener('click', function() {
const bar = document.querySelector('#progress');
const label = document.querySelector('#procent');
let width = 0;
const interval = setInterval(function() {
if (++width >= 100) {
clearInterval(interval);
}
bar.style.width = label.innerText = `${width}%`;
}, 10);
});
document.querySelectorAll('.news-item_title').forEach(n => {
n.querySelector('.tit_link').textContent = '[Подробнее]';
n.closest('.news-block_item').append(n);
});for...of можно без проблем комбинировать с querySelectorAll, то чтобы тут использовать forEach, придётся коду получения элементов добавить обёртку - [...document.getElementsByClassName('...')]):for (const n of document.getElementsByClassName('tit_link')) {
n.innerText = '[Подробнее]';
n.parentNode.parentNode.appendChild(n.parentNode);
}const items = document.querySelector('.news-block_wrap').children;
for (let i = 0; i < items.length; i++) {
items[i].children[1].children[0].innerHTML = '[Подробнее]';
items[i].insertAdjacentElement('beforeend', items[i].children[1]);
}
'/^\+372((( |-)?\d){8,})$/'.
function updateSum() {
const sum = $('.order-table .number').get().reduce((acc, n) => {
const price = +$(n).prev().text().replace(',', '.');
const count = +$('input', n).val();
return acc + price * count;
}, 0);
$('.order-end-form input[type="text"]').val(sum.toFixed(2));
}$('.order-table')
.on('click', '.plus, .minus', function() {
const change = $(this).hasClass('plus') ? 1 : -1;
$(this).siblings('input').val((i, val) => Math.max(0, +val + change));
updateSum();
})
.on('input', '.number input', function() {
$(this).val((i, val) => Math.max(0, val | 0));
updateSum();
});
new Date(2017, 0, 1)? Это первое января текущего года. То есть, условие (new Date()) > ts всегда оказывается истинным, и... ну да, выставляется дата, на 27 дней больше текущей. Ничего удивительного, что у вас постоянно происходит "обновление счета". Вы уж разберитесь, к какому моменту времени надо делать обратный отсчёт.
.recent:hover .info {.info находится не внутри, а после .recent. Делайте так:.recent:hover ~ .info {
Function("process", "return process")(null).
const a = [ 'a', 'b', 'c', 'd' ];
const b = [ 'a', 'b', 'x', 'y', 'z' ];
const c = a.filter(n => b.indexOf(n) === -1);
// или
const c = a.filter(n => !b.includes(n));function diff(data1, data2, key = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set(Array.from(data2, getKey));
return Array.prototype.filter.call(data1, n => !keys.has(getKey(n)));
}
diff([1, 2, 3], [2]) // [1, 3]
diff([{id: 1}, {id: 2}, {id: 3}], [{id: 1}, {id: 3}], 'id') // [{id: 2}]
diff('AbCdE', 'aBc', n => n.toLowerCase()) // ['d', 'E']
Если функция parseInt встречает символ, не являющийся числом в указанной системе счисления, она пропускает этот и все последующие символы+/\d+/.exec(el).
int number = // ну, чему-то там равно, сами подставите
for (int digit = 0; digit < 10; digit++) {
int repeat = 0,
n = number,
p = 10;
do {
int mod = n % p;
if (mod * 10 / p == digit) {
repeat++;
}
n -= mod;
p *= 10;
} while (n);
// что делать с результатом - тоже разбирайтесь сами
printf("%d is repeated %d time(s)\n", digit, repeat);
}
function createTree($data, $levelKey, $childrenKey) {
$tree = [];
foreach ($data as $n) {
$arr = &$tree;
for ($level = $data[0][$levelKey]; $n[$levelKey] > $level; $level++) {
$arr = &$arr[count($arr) - 1][$childrenKey];
}
$arr[] = $n + [ $childrenKey => [] ];
}
return $tree;
}
$tree = createTree($data, 'depth', 'children');function createTree($data, $params = []) {
$levelKey = $params['levelKey'] ?? 'level';
$childrenKey = $params['childrenKey'] ?? 'children';
$root = [];
$parents = [ $data[0][$levelKey] => &$root ];
foreach ($data as $n) {
$n[$childrenKey] = [];
$level = $n[$levelKey];
$p = &$parents[$level];
$p[] = $n;
$parents[-~$level] = &$p[~-count($p)][$childrenKey];
}
return $root;
}
$tree = createTree($arr, [ 'levelKey' => 'depth' ]);
<select>
<option hidden></option>
<option>вкладка 69</option>
<option>вкладка 187</option>
<option>вкладка 666</option>
</select>
<div>
<div class="tab">hello, world!!</div>
<div class="tab">fuck the world</div>
<div class="tab">fuck everything</div>
</div>.tab {
display: none;
}
.tab.active {
display: block;
}document.querySelector('select').addEventListener('change', function() {
document.querySelectorAll('.tab').forEach((n, i) => {
n.classList.toggle('active', i === this.selectedIndex - 1);
});
});
const $picker = $('.datepicker-here');
$picker.datepicker({
onRenderCell(date, cellType) {
if (cellType === 'day') {
const picker = $picker.data('datepicker');
const selectedDate = picker && picker.selectedDates[0];
if (selectedDate && date > selectedDate && date <= +selectedDate + 86400000 * 3) {
return {
disabled: true,
};
}
}
},
});
.item {
transition: transform 1s;
}.move {
transform: translateY(150px);
}$(document).on('click', '.item', function() {
$(this).toggleClass('move');
});<input type="checkbox" id="xxx">
<label class="item" for="xxx">
...input[type="checkbox"] {
display: none;
}
input[type="checkbox"]:checked + .item {
transform: translateY(150px);
}