const ul = document.querySelector('ul');
document.querySelector('a').addEventListener('click', () => {
const id = ul.lastElementChild.id.replace(/\d+$/, m => ++m);
ul.insertAdjacentHTML('beforeend', `<li id="${id}"></li>`);
// или
const li = ul.querySelector('li:last-child').cloneNode(true);
li.id = li.id.replace(/\d/g, '').concat(-~ul.children.length);
ul.append(li);
// или
const li = document.createElement('li');
li.id = 'a' + (+ul.children[ul.children.length - 1].id.slice(1) + 1);
ul.insertBefore(li, null);
});
rectangle.drawRect(cur_x,cur_y,seg_size,seg_size);
rectangle.drawRect(0, 0, seg_size, seg_size);
rectangle.setTransform(cur_x, cur_y);
v-if
с этим геттером. Пока данных нет - экземпляр компонента не будет рендериться, а значит и мутация, требующая отсутствующих данных, тоже вызвана не будет, а значит и ошибки не будет. v-for
.links: [
{ title: 'link #1', to: { name: 'AdmissionActList' } },
{ title: 'link #2', to: { name: 'ShiftsTask' } },
// ну и так далее
],
<ul class="list-unstyled components">
<b-nav-item
v-for="link in links"
:to="link.to"
@click.prevent="sidebarCollapse"
>{{ link.title }}</b-nav-item>
</ul>
в зависимости от значения переменной, нужно рендерить либо<div class="link">контент</div>
либо<router-link to="/path" class="link">контент</router-link>
v-if
/ v-else
.<component v-bind="bullshit" class="link">контент</component>
computed: {
bullshit() {
const attrs = {};
attrs.is = this.isLink ? 'router-link' : 'div';
if (this.isLink) {
attrs.to = '/path';
}
return attrs;
}
}
$(this).parent().next().find('input').prop('disabled', this.value === 'No');
function replaceNumbers(str, matches) {
let count = 0;
return str.replace(/\d/g, d => matches.includes(++count) ? '*' : d);
}
replaceNumbers('+7 (000) 000-00-00', [ 2, 3, 4 ]); // "+7 (***) 000-00-00"
replaceNumbers('+7 (000) 000-00-00', [ 2, 3, 4, 5, 6, 7 ]); // "+7 (***) ***-00-00"
replaceNumbers('+7 (000) 000-00-00', [ 10, 11 ]); // "+7 (000) 000-00-**"
{ required: true }
- что вы хотели этим сказать? Непонятно. Вот вам пример валидации вашей формы, а вот ссылка на документацию - тоже пригодится. str.split('/').pop()
//или
str.slice(str.lastIndexOf('/') + 1)
// или
[...str].reduce((acc, n) => n === '/' ? '' : acc + n, '')
str.match(/[^\/]*$/)[0]
// или
str.replace(/.*\//, '')
max(array_map(function($n) {
return $n['ask']['c'];
}, $obj['candles']))
max(array_column(array_column($obj['candles'], 'ask'), 'c'))
:value="name"
.v-for="(name, i) in names"
, v-model="checkboxValue[i]"
. NOT IN я так понял https://w3resource.com/mysql/comparision-functions... работает начиная с 5.6
arr.map((n, i) => n ? i : null).filter(n => n !== null)
// или
arr.map((n, i) => n ? i : NaN).filter(n => n === n)
// или
arr.map((n, i) => !!n && i).filter(Number.isInteger)
// или
arr.map((n, i) => !n || i).filter(n => n !== !0)
arr.reduce((acc, n, i) => n ? [ ...acc, i ] : acc, [])
// или
arr.reduce((acc, n, i) => (n && acc.push(i), acc), [])
for (let i = arr.length; i--;) {
if (arr[i]) {
arr[i] = i;
} else {
for (let j = i; ++j < arr.length; arr[j - 1] = arr[j]) ;
arr.pop();
}
}
// или
arr.reduceRight((_, n, i, a) => n ? a[i] = i : a.splice(i, 1), 0);
// или
arr.splice(0, arr.length, ...любое_выражение_с_map/filter_или_reduce_из_показанных_выше);
// или
arr.length -= arr.reduce((acc, n, i, a) => (
a[i - acc] = i,
acc + !n
), 0);
data: JSON.stringify({ action: 'get_genres' })
json_decode($_POST['action'])
json_decode(file_get_contents('php://input'), true)['action']