$('#btn').click(function() {
i = (i + 1) % arrLatLng.length;
map.setCenter(arrLatLng[i]);
});
return *this в конце нужных методов. Например:class XXX {
double val;
public:
XXX(double v) {
val = v;
}
XXX& add(double v) {
val += v;
return *this;
}
XXX& sub(double v) {
val -= v;
return *this;
}
friend std::ostream& operator <<(std::ostream &os, const XXX &x) {
return os << x.val;
}
};
...
std::cout << XXX(5).sub(1).add(2).sub(3).add(4) << endl; // 7
const containerSelector = '.info';
const buttonSelector = `${containerSelector} button`;
const props = [ 'quantity', 'square', 'floor' ];
const { elements } = document.querySelector('form');
document.addEventListener('click', ({ target: t }) => {
if (t.matches(buttonSelector)) {
props.forEach(function(n) {
elements[n].value = this.querySelector(`.${n}`).textContent;
}, t.closest(containerSelector));
}
});
const result = arr.flatMap((n, i) => i & 1 ? n : [...n].reverse());const result = [];
for (let i = 0; i < arr.length; ++i) {
const a = i & 1 ? arr[i] : [...arr[i]].reverse();
for (let j = 0; j < a.length; ++j) {
result.push(a[j]);
}
}мне как бы очень важна производительность, и reverse() это как бы дополнительная операция
const result = arr.reduce((acc, n, i) => (
i & 1
? acc.push(...n)
: n.reduceRight((_, m) => acc.push(m), null),
acc
), []);
// или
const result = [];
for (const [ i, n ] of arr.entries()) {
const [ start, end, step ] = [
[ n.length, -1, -1 ],
[ -1, n.length, 1 ],
][i & 1];
for (let j = start; (j += step) !== end;) {
result.push(n[j]);
}
}
id="link".this; а вместо того, чтобы выдумывать какие-то стрёмные id для блоков которые надо показать, поднимайтесь при клике до общего предка блока и кликнутого элемента, и ищите блок через querySelector:onclick="showTooltip(this)"function showTooltip(link) {
const div = link.parentNode.querySelector('div');
if (div.style.display === 'none') {
div.style.display = 'block';
link.style.display = 'none';
} else {
div.style.display = 'none';
}
}document.querySelectorAll('.contacts-number a').forEach(n => {
n.addEventListener('click', onClick);
});
function onClick() {
const div = this.closest('.contacts-number').querySelector('div');
if (div.style.display === 'none') {
div.style.display = 'block';
this.style.display = 'none';
} else {
div.style.display = 'none';
}
}
пока кроме ошибок ничего не получил
document.querySelectorAll('.test').forEach(n => {
n.textContent = n.textContent.replace(/\bAenean\b/g, 'Aenean1');
});
// или
for (const n of document.getElementsByClassName('test')) {
n.innerText = n.innerText.replace(/\bAenean\b/g, '$&1');
}
console.log(this.$store) - этот экшн видит
spoiler
this.$store.originalDispatch('setCategory', cat).
next({
name: 'здесь имя маршрута, придумайте сами',
params: data,
})this.$route.params. Если надо, чтобы свойства params передавались в параметры компонента, также добавьте в описание маршрута props: true.
$header = "<tr>".implode("", array_map(function($n) {
return "<th>$n</th>";
}, array_keys($array)))."</tr>";
$rowsCount = max(array_map(function($n) {
return count($n);
}, $array));
$rows = implode("", array_map(function($i) use($array) {
foreach ($array as $item) {
$row[]= "<td>".(isset($item[$i]) ? $item[$i] : "")."</td>";
}
return "<tr>".implode("", $row)."</tr>";
}, range(0, $rowsCount - 1)));
echo "<table>$header$rows</table>";
const $buttons = $('здесь селектор ваших кнопок').click(function() {
$slick.slick('slickGoTo', $buttons.index(this));
});$slick.on('init beforeChange', function(e, slick, currSlide, nextSlide) {
$buttons
.removeClass('active')
.eq(e.type === 'init' ? slick.currentSlide : nextSlide)
.addClass('active');
});