arr = arr.filter(n => n.id !== ID);
arr.splice(arr.findIndex(n => n.id === ID), 1);
const index = arr.findIndex(n => n.id === ID);
if (index !== -1) {
arr.splice(index, 1);
}
function toggleClass(selector, className, delay) {
let index = -1;
return setInterval($items => {
$items.eq(index).removeClass(className);
index = (index + 1) % $items.length;
$items.eq(index).addClass(className);
}, delay, $(selector));
}
const intervalId = toggleClass('.wrap div', 'active', 300);
function toggleClass(selector, className, delay) {
const items = document.querySelectorAll(selector);
let index = ~-items.length;
return items.length
? setInterval(() => {
items[index].classList.remove(className);
index = -~index % items.length;
items[index].classList.add(className);
}, delay)
: null;
}
data: () => ({
value: '',
error: false
}),
methods: {
checkValue() {
this.error = в зависимости от this.value;
}
}
<input v-model="value" :class="{ error }" @blur="checkValue">
<span v-show="error">ошибка</span>
.error {
border-color: red;
}
Как можно его подключить в проект без использования webpack, vue-cli?
document.querySelectorAll('.item-parent').forEach(n => {
n.insertAdjacentHTML('beforeend', '<div class="item-decor"></div>');
});
for (const n of document.getElementsByClassName('item-parent')) {
const div = document.createElement('div');
div.classList.add('item-decor');
n.appendChild(div);
}
function prev(el, selector) {
if (el instanceof HTMLElement) {
el = el.previousElementSibling;
return el && (!selector || el.matches(selector)) ? el : null;
}
if (el && Number.isInteger(el.length) && el.length >= 0) {
return Array.prototype.reduce.call(
el,
(acc, n) => ((n = prev(n, selector)) && acc.push(n), acc),
[]
);
}
return null;
}
// можно передавать как одиночный элемент (результатом будет тоже элемент или null)...
prev(document.body)
// ... так и коллекции (результатом будет массив)
prev(document.images)
prev(document.querySelectorAll('div'), 'span')
v-model
:input.value = какое-то значение;
input.dispatchEvent(new Event('input'));
почему то, выводятся данные в виде undefined
getFriends() {
return Vue.axios.get(...
this.$friends.getFriends().then(friends => console.log(friends))
.then((response) => {
this.loading = false;
console.log(response);
})
.then(function(response) {
this.loading = false;
console.log(response);
}.bind(this))
var that = this;
axios.post('/comment', {
text: this.com_text,
}).then(function(response) {
that.loading = false;
console.log(response);
})
methods: {
async add_comm() {
this.loading = true;
try {
var response = await axios.post('/comment', {
text: this.com_text
});
console.log(response);
} catch(error) {
console.error(error);
}
this.loading = false;
}
}
methods: {
add_comm() {
this.loading = true;
axios.post('/comment', {
text: this.com_text
})
.then(this.onResponse)
.catch(this.onError)
.finally(this.onFinal);
},
onResponse(response) {
console.log(response);
},
onError(error) {
console.error(error);
},
onFinal() {
this.loading = false;
}
}
$rows = $result->fetchAll();
foreach ($rows as $row) {
while ($row = $result->fetch()) {
SELECT range_id, MIN(sernum), MAX(sernum)
FROM table_name
GROUP BY range_id
:src="getImgUrl(diaryIcons)
сделайте :src="getImgUrl(icons)
.getImgUrl(icon) {
var images = require.context('../../../../assets/icons/', false, /\.png$/)
return images('./' + icon.name + '.png')
}
const $sorted = $('table tr').sort(el => $(el).hasClass('important') ? -1 : 1);
$sorted.appendTo($sorted.parent());
const $important = $('table tr.important');
$important.parent().prepend($important);
data: () => ({
focused: false,
}),
<input @focus="focused = true" @blur="focused = false">
<span v-show="focused">FOCUSED</span>