state отказывается обновляться
onImportantClick = (e) => {
e.stopPropagation();
this.setState(({ important }) => ({
important: !important
}));
};
const containerSelector = '#menu_left';
const itemSelector = `${containerSelector} li`;
const className = 'active';
$(itemSelector).click(function(e) {
e.stopPropagation();
$(this).addClass(className);
});
// или
document.querySelectorAll(itemSelector).forEach(function(n) {
n.addEventListener('click', this);
}, e => {
e.stopPropagation();
e.currentTarget.classList.add(className);
});
$(containerSelector).click(e => {
$(e.target).closest(itemSelector).addClass(className);
});
// или
document.querySelector(containerSelector).addEventListener('click', e => {
const li = e.target.closest(itemSelector);
if (li) {
li.classList.add(className);
}
});
const parent = document.querySelector('.box').parentNode;
const iMin = 2;
const iMax = 5;
const wrapper = document.createElement('div');
wrapper.classList.add('wrapper');
if (parent.children[iMin]) {
const elems = Array.prototype.slice.call(parent.children, iMin, iMax);
elems[0].before(wrapper);
wrapper.append(...elems);
}
// или
const elems = parent.querySelectorAll(`:nth-child(n + ${-~iMin}):not(:nth-child(n + ${-~iMax}))`);
if (elems.length) {
parent.insertBefore(wrapper, elems[0]);
elems.forEach(n => wrapper.appendChild(n));
}
// или
if (parent.children.length > iMin) {
parent.children[iMin].insertAdjacentElement('beforebegin', wrapper);
for (let i = iMax - iMin, n = null; i-- && (n = wrapper.nextElementSibling);) {
wrapper.insertAdjacentElement('beforeend', n);
}
}
const result = await Promise.all([ 1, 2, 3 ].map((n, i) => {
return new Promise(resolve => {
setTimeout(() => {
console.log(`timeout #${i}`);
resolve(n * 10);
}, Math.random() * 3000 | 0);
});
}));
console.log('result:', result);
ошибка появилась из ниоткуда
.hidden {
opacity: 0;
}
data: () => ({
items: [
{ text: '...', hidden: true },
{ text: '...', hidden: true },
...
],
}),
mounted() {
this.items.forEach((n, i) => {
setTimeout(() => n.hidden = false, 300 * (i + 1));
});
},
<li v-for="{ text, hidden } in items" :class="{ hidden }">
<a href="">{{ text }}</a>
</li>
const length = 25;
const createItem = i => ({
url: `photos/${i}.jpg`,
// ещё какие-то свойства
});
const items = Array.from({ length }, (_, i) => createItem(i + 1));
// или
const items = [];
for (let i = 1; i <= length; i++) {
items.push(createItem(i));
}
// или
const items = [];
while (items.length < length) {
items[items.length] = createItem(-~items.length);
}
// или
const items = (function createItems(i) {
return i > 0 ? [ ...createItems(i - 1), createItem(i) ] : [];
})(length);
И самое главное, мне нужно потом взять значение этих массивов.
descriptionImage.url - Как-то так
descriptionImage[индекс элемента].url
. не оборачиваются
$('.list').find('li:gt(2)').hide();
// или
$('li:gt(2)', '.list').hide();
// или
$('.list li:nth-child(3)').nextAll().hide();
// или
$('.list li:nth-child(n + 4)').hide();
// или
$('.list li').next().next().next().hide();
// или
$('.list > + + +').hide();
Array
.from(document.querySelectorAll('.list'))
.flatMap(n => [...n.children].slice(3))
.forEach(n => n.hidden = true);
// или (тут надо будет стиль добавить: .hidden { display: none; })
[].forEach.call(document.getElementsByClassName('list'), n => {
[].forEach.call(n.getElementsByTagName('li'), (m, i) => {
m.classList.toggle('hidden', i > 2);
});
});
hide('.list', 'li', 3);
): function hide(containerSelector, elementSelector, hideFrom) {
$(containerSelector).each((i, n) => {
$(elementSelector, n).slice(hideFrom).hide();
});
}
// или
function hide(containerSelector, elementSelector, hideFrom) {
for (const n of document.querySelectorAll(containerSelector)) {
const elements = n.querySelectorAll(elementSelector);
for (let i = hideFrom; i < elements.length; i++) {
elements[i].style.display = 'none';
}
}
}
const marker = new ymaps.Placemark([ latitude, longitude ], {}, {
preset: 'islands#redHomeIcon',
});
map.geoObjects.add(marker);
.section
, внутренний - .section__item
:class App extends React.Component {
state = {
cards: Array.from({ length: 7 }, (_, i) => ({
id: i + 1,
content: Math.pow(i, 3),
})),
}
addElem = () => {
this.setState(({ cards }) => ({
cards: [ ...cards, {
id: cards.length + 1,
content: Math.random().toString(16).slice(2),
} ],
}));
}
render() {
const { cards } = this.state;
const chunkLen = 3;
const chunks = Array.from(
{ length: Math.ceil(cards.length / chunkLen) },
(_, i) => cards.slice(i * chunkLen, (i + 1) * chunkLen)
);
return (
<div>
<button onClick={this.addElem}>add new element</button>
{chunks.map(n => (
<div className="section">
{n.map(m => (
<div className="section__item">
<a>#{m.id} {m.content}</a>
</div>
))}
</div>
))}
</div>
);
}
}