<v-data-table>
<template #item="{ item }">
<tr>
<td class="какой-то_класс">{{ item['какое-то свойство'] }}</td>
<td class="ещё_какой-то_класс">{{ item['ещё какое-то свойство'] }}</td>
<td class="ну_и_так_далее">{{ item['как видите, ничего сложного'] }}</td>
</tr>
</template>
</v-data-table>
const last = promises => new Promise((resolve, reject) => {
let pending = promises.length;
if (!pending) {
resolve();
} else {
promises.forEach(n => n
.then(result => --pending || resolve(result))
.catch(error => --pending || reject(error))
);
}
});
v-for={weekDay in this.arWeekDays}
выдает ошибку "index is not defined"
<div>
{this.arWeekDays.map(n => <div>{n}</div>)}
</div>
siteForm.userAdmin = loginValue === login && passwordValue === password;
const order = Object.fromEntries(gameTypeOrder.map((n, i) => [ n, i ]));
res.sort((a, b) => order[a.game_status] - order[b.game_status]);
const sortedRes = res
.reduce((acc, n) => (acc[order[n.game_status]].push(n), acc), gameTypeOrder.map(() => []))
.flat();
// или
const sorted = (arr, key) => arr
.map(n => [ n, key(n) ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0]);
const sortedRes = sorted(res, n => order[n.game_status]);
document.querySelectorAll('.gallery').forEach(n => {
});
'.gallery-thumbs'
и '.gallery-top'
на n.querySelector('.gallery-thumbs')
и n.querySelector('.gallery-top')
соответственно. .slick-dots li > button {
width: 8px;
height: 8px;
}
.slick-dots li.slick-active > button {
width: 20px;
height: 20px;
}
.slick-dots li.slick-active + li > button {
width: 14px;
height: 14px;
}
$('.gallery-colors :checked')
.parent()
.prevAll()
.find('input[type="radio"]:not(:disabled)')
.last()
.click()
str.slice(str.lastIndexOf('/') + 1, str.lastIndexOf('.'))
// или
str.split('/').pop().split('.').slice(0, -1).join('.')
// или
str.replace(/.+\//, '').replace(/\.[^.]+$/, '')
// или
str.match(/(?<=\/)[^/]+(?=\.[^.]+$)/)[0]
// или
str.match(/\/([^/]+)\.[^.]+$/)[1]
<div class="preloader">
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
</div>
.circle {
background: grey;
display: inline-block;
border-radius: 50%;
width: 20px;
height: 20px;
animation: preloader 1s infinite linear;
}
.circle:nth-child(1) { animation-delay: 0s; }
.circle:nth-child(2) { animation-delay: 0.2s; }
.circle:nth-child(3) { animation-delay: 0.4s; }
@keyframes preloader {
0%, 40% {
background: grey;
}
20% {
background: black;
}
}
$('button.prev').click(function() {
$('.slide:last').prependTo($('.slider'));
$('.slider').css('margin-left', '-100%').animate({
marginLeft: '+=100%'
}, 500);
});
$(document).on('click', function(e) {
e.preventDefault();
const $submenu = $(e.target).closest('li').children('.submenu');
$submenu.fadeToggle();
$('.nav li ul').not($submenu).fadeOut();
});
кастомные свойства для иконки прописал...
function mul(start, end) {
let result = 1;
for (let i = start; i <= end; i++) {
result *= i;
}
return result;
}
function choose(n, k) {
return n > k
? Math.round(mul(n - k + 1, n) / mul(2, k))
: +(n === k);
}
const table = document.querySelector('здесь селектор вашей таблицы');
const idAttr = 'id-object';
const propAttr = 'object-name';
const data = Array.prototype.reduce.call(
table.querySelectorAll('table tbody tr'),
(acc, tr) => (
tr.querySelectorAll(`[${propAttr}]`).forEach(function(td) {
this[td.getAttribute(propAttr)] = td.innerText;
}, acc[tr.querySelector(`[${idAttr}]`).getAttribute(idAttr)] = {}),
acc
),
{}
);
// или
const data = {};
for (const { rows } of table.tBodies) {
for (const { cells } of rows) {
const item = data[cells[0].attributes[idAttr].value] = {};
for (let i = 1; i < cells.length; i++) {
const td = cells[i];
item[td.attributes[propAttr].value] = td.textContent;
}
}
}
const className = 'skiptranslate';
.for (const { childNodes: n } of document.getElementsByClassName(className)) {
for (let i = n.length; i--;) {
if (n[i].nodeType === Node.TEXT_NODE) {
n[i].remove();
}
}
}
document.querySelectorAll(`.${className}`).forEach(n => {
const nodes = [...n.children];
n.innerHTML = '';
n.append(...nodes);
});