const removeNonUnique = array => {
const cache = new Set();
const store = new Set();
for (const entry of array) {
if (cache.has(entry)) {
store.delete(entry);
} else {
cache.add(entry);
store.add(entry);
}
}
return [...store];
};
console.log(
removeNonUnique([1, 2, 1, 1, 42, 3, 1, 3, 2, 3])
);
fetch
, для начала попробуйте .text()
. max-height: 300px
, а при нажатии на кнопку установить большое число максимальной высоты, например max-height: 1200px
. Анимировать через transition. Это самый простой вариант.элемент -> максимальная его высота
), например - Map
и заполнять данный массив при загрузке страницы. Максимальную высоту, естественно, высчитывать. При изменении размеров окна пересчитывать максимальную высоту. При нажатии на элемент, брать его максимальную высоту и запоминать его текущую высоту. Менять текущую высоту на максимальную. При повторном нажатии вернуть сохраненную высоту. spread-radius
у filter: drop-shadow
сделают, можно будет отказаться от хака через ::after
function mobileClassExist(className, callback) {
$.ajax({
...,
success(data) {
callback(data);
}
});
}
mobileClassExist(..., function (exists) {
console.log(exists);
});
function mobileClassExist(className) {
return new Promise(function (resolve, reject) {
$.ajax({
...,
success(data) {
resolve(data);
},
error(data) {
reject(data);
}
});
});
}
mobileClassExist(...)
.then(function (exists) {
console.log(exists);
});
let btn = document.querySelector('#button1');
let elements = document.querySelectorAll('.test');
btn.addEventListener('click', changeColor);
function changeColor() {
for (let element of elements) {
elements.classList.toggle('color1');
}
}
myCSS
устанавливаете. const player = {
x: 0,
y: 0,
speed: 3
};
const target = {
x: 100,
y: 300
};
// Ваша функция для обновления
const update = () => {
const angle = Math.atan2(target.y - player.y, target.x - player.x);
const distance = Math.hypot(target.x - player.x, target.y - player.y);
if (distance > player.speed) {
player.x += Math.cos(angle) * player.speed;
player.y += Math.sin(angle) * player.speed;
} else {
player.x += Math.cos(angle) * distance;
player.y += Math.sin(angle) * distance;
}
requestAnimationFrame(update);
};
update();
<form action="some_url" method="POST">
<input type="text" name="username">
<button>Submit</button>
</form>
const form = document.querySelector('form');
const users = ['John', 'Emily', 'Bruce', 'Alice'];
form.addEventListener('submit', event => {
const input = form.querySelector('input[type="username"]');
const index = users.indexOf(input.value);
if (index === -1) {
event.preventDefault();
} else {
input.value = index;
}
});
var countPlus = function(e) {
var max = Number(slider.attr('max'));
count++;
if (count > max) {
count = max;
}
// Или заменить инкремент и условие выше на это
// count = Math.min(count + 1, max);
slider.val(count);
applyFill(slider[0]);
};
input
что-то написано, в функции applyFill
- нет. А еще эту страшилку для разделения можно заменить на это (Для locale
использовать ru-RU
).