Логика такая, при клике на пункт списка, например "About" этот текст оказывался на месте текущего, а текущий в списке.
dropdown-menu-item
, например. И код в обработчик клика:const item = event.target.closest('.dropdown-menu-item');
if (item) {
const btn = item.closest('.dropdown').querySelector('.dropdown-toggle');
[ btn.textContent, item.textContent ] = [ item.textContent, btn.textContent ];
}
Я реализовал очень простые вкладки на React.js.
на Redux не работают
$index = array_search($value, $arr);
$newArr = $index !== false ? array_slice($arr, $index + 1, 5) : [];
JSON.stringify([...this.querySelectorAll('[name]')].map(n => ({
[n.name]: n.type === 'checkbox' ? n.checked : n.value,
})))
incrementCount = (id, name, price) => {
this.setState(({ count }) => {
const el = count.find(n => n.id === id);
return {
count: el
? count.map(n => n === el ? { ...n, count: n.count + 1 } : n)
: [ ...count, { id, name, price, count: 1 } ]
};
});
}
this.state.count.reduce((acc, n) => acc + n.price * n.count, 0)
const parseDate = str => new Date(str.split('/').reverse().join('-'));
all_orders.sort((a, b) => parseDate(a.order_date) - parseDate(b.order_date));
const sortedOrders = all_orders
.map(n => [ n, parseDate(n.order_date) ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0]);
str.replace(/(?<=.{2}).(?=.{2})/g, '*')
// или
str.replace(/^(.{2})(.+)(.{2})$/, (m, g1, g2, g3) => g1 + '*'.repeat(g2.length) + g3)
// или
Array.from(str, (n, i) => (i < 2 || i > str.length - 3) ? n : '*').join('')
.big-dropdown > .dropdown > button[aria-expanded="true"]::after {
content: "\25B2";
}
const onClickRow = () => {
console.log('Строка');
};
const onClickButton = e => {
e.stopPropagation();
console.log('Кнопка');
};
<div onClick={onClickRow}>
<button onClick={onClickButton}>click me</button>
</div>
const onClickRow = e => {
if (e.target.tagName === 'BUTTON') {
console.log('Кнопка');
} else {
console.log('Строка');
}
};
<div onClick={onClickRow}>
<button>click me</button>
</div>
[...Array(12)].map((n, i) => new Date(0, i).toLocaleString('en-US', { month: 'long' }))
computed: {
disabled() {
return !this.selected.length;
},
},
<v-btn
:disabled="disabled"
...
Object.entries(arr.reduce((acc, n) => {
const [ k, v ] = Object.entries(n)[0];
(acc[k] = acc[k] || []).push(...v);
return acc;
}, {})).map(n => Object.fromEntries([ n ]))
Пробовал ставить перед скобкой «\» не работает.
const createXML = obj => Object
.entries(obj)
.map(([ k, v ]) => `<ns1:${k}>${v instanceof Object ? createXML(v) : v}</ns1:${k}>`)
.join('');
const createXML = (obj, tabSize = 2, depth = 0) => {
const indent = ' '.repeat(tabSize * depth);
return Object.entries(obj).map(([ k, v ]) =>
indent +
`<ns1:${k}>${
v instanceof Object
? `\n${createXML(v, tabSize, depth + 1)}\n${indent}`
: v
}</ns1:${k}>`
).join('\n');
};
modal.style.display = "none"
делайте modal.remove()
, и всё будет окей.