new Worker("PrimeWorker.js");
А вот соответственно и код PrimeWork.js:
Функция продолжает работу после инструкции return true
checkPalindrome(newStr);
return checkPalindrome(newStr);
<div class="map" id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js"></script>
html, body {
padding: 0;
margin: 0;
}
.map {
position: absolute;
width: 100%;
height: 100%;
}
let iconIndex = -1;
const icons = [
'http://icons.iconarchive.com/icons/icons-land/vista-map-markers/64/Map-Marker-Marker-Outside-Chartreuse-icon.png',
'http://icons.iconarchive.com/icons/icons-land/vista-map-markers/64/Map-Marker-Marker-Outside-Azure-icon.png',
'http://icons.iconarchive.com/icons/icons-land/vista-map-markers/64/Map-Marker-Marker-Outside-Pink-icon.png'
];
google.maps.event.addDomListener(window, 'load', function() {
const latlng = { lat: -25.363, lng: 131.044 };
const map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: latlng,
});
const marker = new google.maps.Marker({
position: latlng,
map,
});
google.maps.event.addListener(marker, 'click', function() {
iconIndex = (iconIndex + 1) % icons.length;
marker.setIcon(icons[iconIndex]);
});
});
const $wrapper = $('.wrapper');
$wrapper
.children()
.sort((a, b) => $('p', a).text() - $('p', b).text())
.appendTo($wrapper);
const wrapper = document.querySelector('.wrapper');
wrapper.append(...Array
.from(wrapper.children, n => [ n, +n.querySelector('p').innerText ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0])
);
document.querySelector('input').addEventListener('input', function() {
this.value = this.value.toUpperCase();
});
text-transform: uppercase; - не подходит, так как влияет только на отображения, не меняя сами данные
.toUpperCase()
при получении значения input'а. const arr = str.split(' ').map(n => isNaN(n) ? n : +n);
function Ship(x, y) {
this.x = x;
this.y = y;
}
function PlayerShip(x, y) {
Ship.call(this, x, y);
this.petrol = 100;
}
Копипаста кода из документации результата не даёт
const classes = $buttons.get().map(n => n.dataset.set);
$buttons.click(function() {
$('.current').removeClass('current');
$(this).addClass('current');
$blocks.removeClass(classes.join(' ')).addClass(this.dataset.set);
});
let currentClass = null;
$buttons.click(function() {
$('.current').removeClass('current');
$(this).addClass('current');
const newClass = this.dataset.set;
$blocks.removeClass(currentClass).addClass(newClass);
currentClass = newClass;
});
.services_minus
. То есть, при клике на плюс не происходит вообще ничего, а минус - количество будет уменьшаться, и сразу же увеличиваться обратно..next('.services_nomer')
следует заменить на.closest('.services_button_block').find('.services_nomer')
parseInt
. Или можно оформить как одно выражение и поиск элемента с количеством и его обновление, передав в метод text
функцию, которая примет текущее содержимое элемента и должна будет вернуть новое:$('.services_minus').click(function() {
$(this)
.closest('.services_button_block')
.find('.services_nomer')
.text((i, text) => Math.max(0, text - 1));
});
$('.services_plus').click(function() {
$(this)
.closest('.services_button_block')
.find('.services_nomer')
.text((i, text) => +text + 1);
});
const interval = 5 * 60 * 1000 // 5 минут, ага
const x = moment(Math.ceil(moment() / interval) * interval).format('HH:mm:ss')
Почему я не могу сделать просто func(args) ?
Зачем нужно подставлять контекст?
func(...args)
. $elems.change(function() {
...
}).change();
function onChange() {
...
}
$elems.change(onChange).each(onChange);
class Game extends React.Component {
state = {
panesCurrent: [],
panesDefault: [ 1, 1, 1, 0, -1, -1, -1 ],
panesWin: [ -1, -1, -1, 0, 1, 1, 1 ],
}
componentDidMount() {
this.reset();
}
componentDidUpdate() {
if (this.state.panesCurrent.every((n, i) => n === this.state.panesWin[i])) {
setTimeout(alert, 25, 'WIN');
}
}
onClick(index) {
const clicked = this.state.panesCurrent[index];
if (clicked === 0) {
return;
}
for (let i = 1; i <= 2; i++) {
const t = index + clicked * i;
if (this.state.panesCurrent[t] === 0) {
const panes = [...this.state.panesCurrent];
[ panes[index], panes[t] ] = [ panes[t], panes[index] ];
this.setState({ panesCurrent: panes });
break;
}
}
}
reset = () => {
this.setState(({ panesDefault }) => ({
panesCurrent: [...panesDefault],
}));
}
render() {
return (
<div>
<button onClick={this.reset}>reset</button>
<div className="game">
{this.state.panesCurrent.map((n, i) => (
<div
className={'pane ' + [ 'left', '', 'right' ][n + 1]}
onClick={() => this.onClick(i)}
></div>
))}
</div>
</div>
)
}
}
.game {
font-size: 5px;
}
.pane {
display: inline-block;
width: 10em;
height: 10em;
margin: 1em;
}
.pane.right::after,
.pane.left::after {
position: relative;
display: inline-flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
font-family: monospace;
font-size: 4em;
}
.pane.right::after {
content: "-->";
color: red;
border: 2px solid red;
}
.pane.left::after {
content: "<--";
color: lime;
border: 2px solid lime;
}