position: fixed;
, положение его менять программно по событию "scroll".document.addEventListener('scroll', () => {
let offset = window.scrollY;
const start = 685; // начало стоп-зоны в px
const stop = 1000; // конеч стоп-зоны
if (offset >= start && offset < stop) {
offset = start; // стоим на месте
} else if (offset >= stop) {
offset -= (stop - start); // продолжаем движение
}
content.style.top = `-${offset}px`; // позиционируем контент
});
function checkResult() {
const data = {
hash: hash,
}
$.ajax({
url: 'result.php',
dataType: "json",
data: data,
success: (result) => {
const ok = result.ok;
if (ok != 1) {
// перезвоните через секунду
setTimeout(checkResult, 1000);
}
},
error: (response) => { // Данные не отправлены
$('#result_form').html('Ошибка. Данные не отправлены.');
}
});
}
checkResult();
event.stopPropagation();
document.body.addEventListener('click', () => {
if (newdiw.classList.contains("active")) newdiw.classList.remove("active");
});
innerHTML
заменит собой все, что было ранее. А createElement()
позволяет заранее навесить слушателей событий прямо на создаваемый элемент.завершающий callback
const waitFor = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function test() {
await waitFor(1000);
return 1;
}
const counter = {};
// пройти по массиву, заполняя counter
arr.forEach((el) => counter[el] = (counter[el] || 0) + 1);
{
555: 1,
30167380: 2,
496903611692199: 1,
245970100361652: 2,
711023259278888: 2
}
const even = [...document.querySelectorAll(".flex-sec > div:nth-child(even)")];
const odd = [...document.querySelectorAll(".flex-sec > div:nth-child(odd)")];
const className = '_tog-sw';
let counter = 0;
document.querySelector(".flex-sec > button")
.addEventListener('click', () => {
counter++;
[odd, even].forEach((arr, i) => {
arr.forEach((el) => el.classList[i === (counter & 1) ? 'add' : 'remove'](className));
});
});
sort()
— это только весы с двумя чашами:a - b
. Например, массив объектов типа [
{name: "Вольдемар", iq: 165},
{name: "Сигизмунд", iq: 178},
{name: "Жоржик", iq: 85},
]
захочется отсортировать по свойству iq
. Тогда функция должна будет возвращать a.iq - b.iq
$("#btnLike").one('click', function() { // .one() выполнится только 1 раз
// ........код
// кнопку больше не нажимать:
$(this).attr('disabled', true); // и стилями сделать её блеклой
$.ajax({
method: 'post',
url: "https://site.com/like.php",
dataType: 'text',
data: {
'like': 1
},
success: function(result) { // обработка ответа
if (result != 'OK') {
// вывести ошибку из ответа
}
// ......результат;
}
});
});
function check() {
const rules = { // имя: длина
"fcard": 16,
"fexpm": 2,
"fexpy": 2,
"fcvc": 3,
};
const colorOk = '#009cde';
const colorFail = '#de0000';
let allValid = true;
for (let name in rules) {
const el = document.querySelector(`input[name='${name}']`);
const isValid = el.value.length >= rules[name];
el.style.borderColor = isValid ? colorOk : colorFail;
if (! isValid) {
allValid = false;
}
}
if (allValid) {
document.getElementById('anus-p').submit();
} else {
return false;
}
}
length
есть не только у строки и массива: например, есть length
и у Function
.function f(a, b, c) {}
f.length // 3 - число аргументов
length
— на этом и заканчиваются общие черты, пожалуй? У строки чтение символа по его позиции через квадратные скобки — скорее просто синтаксический «сахар», более короткая запись метода строки charAt()