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);
const tableSelector = 'таблица ваша, так что вам и виднее, какой у неё селектор';
const str = 'Материал';
$(`${tableSelector} tbody tr:contains(${str})`).hide();
for (const { rows } of document.querySelector(tableSelector).tBodies) {
for (const tr of rows) {
for (const td of tr.cells) {
if (td.innerText.includes(str)) {
tr.style.display = 'none';
break;
}
}
}
}
.hidden {
display: none;
}
document.querySelectorAll(`${tableSelector} tbody tr`).forEach(tr => {
tr.classList.toggle('hidden', ~tr.textContent.indexOf(str));
});
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;
}
Можете подсказать что я делаю не так