false
, подсовывайте какое-то корректное дефолтное значение, в данном случае - пустую строку:(item._Name || '').trim()
item._Name?.trim?.() ?? ''
Владивосток - плюс 7 часов к текущему.
function getTimeInTimezone(zone) {
const
d = new Date(),
utc = d.getTime() + d.getTimezoneOffset() * 60000;
return new Date(utc + zone * 3600000);
}
new Date()
, делаем так: getTimeInTimezone(10)
. if (![ 'search', 'search_input', 'cancel_btn' ].includes(target.className)) {
const t = target.className;
if (t !== 'search' && t !== 'search_input' && t !== 'cancel_btn') {
if (!target.matches('.search, .search_input, .cancel_btn')) {
<div class="block">hello, world!!</div>
<div class="block">fuck the world</div>
<div class="block">fuck everything</div>
.block {
display: inline-block;
width: 500px;
height: 150px;
padding: 20px;
background: red;
color: white;
}
const $blocks = $('.block').hide();
let i = -1;
(function showNext() {
$blocks
.eq(i = (i + 1) % $blocks.length)
.dequeue()
.fadeIn(1000)
.delay(500)
.fadeOut(1000)
.queue(showNext);
})();
|о|д|и|н|
|е|т|ы|д|
|ч|е|р|в|
|и|р|т|а|
function makeTable(data) {
data = data.join('').split('');
let width = Math.sqrt(data.length) | 0;
let height = (data.length / width) | 0;
while (width * height !== data.length) {
width--;
height = (data.length / width) | 0;
}
const position = [ 0, 0 ];
const directions = [
[ 1, 0 ],
[ 0, 1 ],
[ -1, 0 ],
[ 0, -1 ],
];
let direction = 0;
const result = Array.from({ length: height }, n => Array(width).fill(null));
for (const n of data) {
result[position[1]][position[0]] = n;
if (null !== (result[position[1] + directions[direction][1]] || {})[position[0] + directions[direction][0]]) {
direction = (direction + 1) % directions.length;
}
position[0] += directions[direction][0];
position[1] += directions[direction][1];
}
return result.map(n => n.join(' ')).join('\n');
}
console.log(makeTable([ 'раз', 'два', 'три' ])); /*
р а з
р и д
т а в
*/
console.log(makeTable([ 'один', 'два', 'три', 'четыре' ])); /*
о д и н
е т ы д
ч е р в
и р т а
*/
console.log(makeTable([ 'hello', ',', ' ', 'world', '!!' ])); /*
h e
! l
! l
d o
l ,
r
o w
*/
const elems = document.querySelectorAll('div');
function handler() {
alert(123);
elems.forEach(n => n.removeEventListener('click', handler));
}
elems.forEach(n => n.addEventListener('click', handler));
const elems = [...document.querySelectorAll('div')];
document.addEventListener('click', function handler(e) {
if (elems.some(n => n.contains(e.target))) {
alert(123);
document.removeEventListener('click', handler);
}
});
const selector = '[id^="oOR"]';
const clickCount = 100;
$(selector).slice(0, clickCount).click();
// или
[...document.querySelectorAll(selector)].slice(0, clickCount).forEach(n => n.click());
из-за "одновременного" клика все виснет
Может подскажете конструкцию с .delay() (или чем то аналогичным)
function chunkedAndDelayed(data, delay, chunkSize, onChunk) {
const getChunk = (data.slice || Array.prototype.slice).bind(data);
(function nextChunk(i) {
if (i < data.length) {
onChunk(getChunk(i, i + chunkSize));
setTimeout(nextChunk, delay, i + chunkSize);
}
})(0);
}
const delay = 500;
const clickChunkSize = 5;
chunkedAndDelayed(
$(`${selector}:lt(${clickCount})`),
delay,
clickChunkSize,
$elems => $elems.click()
);
// или
chunkedAndDelayed(
Array.prototype.slice.call(document.querySelectorAll(selector), 0, clickCount),
delay,
clickChunkSize,
elems => elems.forEach(n => n.click())
);
[
'https://toster.ru/foto/cool/432rejfio23.jpg',
'https://toster.ru/foto/f923jiwe.gif',
'https://toster.ru/foto/new/1423.png',
'https://toster.ru/foto/123a.jpg'
].map(function(n) {
const [ , path, file ] = /(.+\/)([^\/]+)$/.exec(n);
return { file, path };
});
[
'https://toster.ru/foto/cool/432rejfio23.jpg',
'https://toster.ru/foto/f923jiwe.gif',
'https://toster.ru/foto/new/1423.png',
'https://toster.ru/foto/123a.jpg'
].map(function(n) {
const lastSlash = n.lastIndexOf('/') + 1;
return {
file: n.slice(lastSlash),
path: n.slice(0, lastSlash)
};
});
<select id="country"></select>
<select id="сity"></select>
<p></p>
const data = {
'Франция': [ 'Париж', 'Марсель', 'Лион' ],
'США': [ 'Вашингтон', 'Чикаго', 'Фарго' ],
'Италия': [ 'Рим', 'Милан', 'Неаполь' ],
};
const country = document.querySelector('#country');
const city = document.querySelector('#сity');
const p = document.querySelector('p');
country.addEventListener('change', e => {
setSelectOptions(city, data[e.target.value]);
});
city.addEventListener('change', () => {
p.innerText = [ country.value, city.value ].join(', ');
});
setSelectOptions(country, Object.keys(data));
function setSelectOptions(selectEl, optionsData) {
selectEl.innerHTML = optionsData.map(n => `<option>${n}</option>`).join('');
selectEl.dispatchEvent(new Event('change'));
}
const cardSelector = '.post';
const buttonSelector = '.post > img';
const menuSelector = '.post-info';
const activeClass = 'active';
document.addEventListener('click', ({ target: t }) => {
if (!t.closest(menuSelector)) {
document.querySelectorAll(menuSelector).forEach(n => n.classList.remove(activeClass));
}
if (t.matches(buttonSelector)) {
t.closest(cardSelector).querySelector(menuSelector).classList.add(activeClass);
}
});
goal-check
выставляется и тут же снимается..goal
и .delete
надо вешать один раз, применяя делегирование:$('.todo-task').on('click', '.delete', function() {
$(this).parent().remove();
});
$('.todo-task').on('click', '.goal', function() {
$(this).toggleClass('goal-check');
});
const selector = '.tr-class input[type="checkbox"]';
document.querySelectorAll(selector).forEach(function(n) {
n.addEventListener('click', this);
}, e => e.stopPropagation());
for (const n of document.querySelectorAll('.tr-class')) {
n.addEventListener('click', onClick);
}
function onClick(e) {
if (e.target.matches(selector)) {
return;
}
// ...
}
myVariable && (myVariable - 35)
[100, 0, null, '', true, false, 'gdfsg'].map(n => [n ? n - 35 : n, n && (n - 35)]);
/*
0:(2) [65, 65]
1:(2) [0, 0]
2:(2) [null, null]
3:(2) ["", ""]
4:(2) [-34, -34]
5:(2) [false, false]
6:(2) [NaN, NaN]
*/
(n => n && (n - 35))(myVariable)
Как решить эту проблему?
moment('06.09.2017 16:16', 'DD-MM-YYYY HH:mm')
new Date('06.09.2017 16:16'.replace(/(\d+)\.(\d+)\.(\d+)/, '$3-$2-$1'))
$('select').val('ru').trigger('click');
пишем так:$('select').val('ru')[0].dispatchEvent(new Event('change'));