$txt = file_get_contents("php://input")
$_POST['txt']
отправляйте их data: { txt: txt }
jQuery.ajax({
url: 'sendMessage.php',
type: 'POST',
data: {
txt: txt
},
success: function(data) {
alert(data)
},
error: function() {
console.log('ERROR')
},
})
if (n == num) {
clearInterval(interval);
}
l.innerHTML = n;
на if (n >= num) {
clearInterval(interval);
l.innerHTML = num;
return;
}
l.innerHTML = n;
<div class="wrapper">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
document.querySelectorAll('.wrapper').addEventListener('mousemove', e => {
if (!e.target.classList.contains('block')) return; // Если элемент который вызвал это событие не имеет класса block, то отправляем return, тем самым код ниже выполнятся не будет
// тут писать код который будет выполнятся если элемент который вызвал это событие имеет класса block
})
$(".some-link").each((i, el) => {
if ($(el).text().match(/Ru/g)) {
$(el).css("color", "yellow");
}
})
$("#pum-235").show()
всегда будет true в контексте if else, так как возвращает объект. Следовательно зачем она нужна в условии не совсем ясно.$(".mfp-wrap").hide() + $(".mfp-bg").hide();
Влезать в чужой код, а потом удивляться что он перестал работать глупо, вам так не кажется? Если вам нужно закрыть тот popup, то закройте его, нет необходимости нарушать работу чужого кода. Есть кнопка которая его закрывает, вот она:<button title="Close (Esc)" type="button" class="mfp-close">×</button>
эмулируйте нажатие этой кнопки - $('.mfp-close').click()
и никакой проблемы не будет$('#hider').click(() => {
$('.mfp-close').click() // Скрыли предыдущий popup
$('#pum-235').show() // Показали ваш
});
document.addEventListener(`keydown`, function(event) {
if (event.code !== "KeyN") return;
// Дальше ваш код
if (event.key.toLowerCase() !== "n") return;
const mediaQueryList = window.matchMedia('(max-width: 570px)');
mediaQueryList.addEventListener('change', () => {
document.querySelector('meta[name="viewport"]').setAttribute(
'content',
'width=device-width, user-scalable=no, initial-scale=' +
(mediaQueryList.matches ? document.clientWidth / 570 : 1.0)
);
});
mediaQueryList.dispatchEvent(new Event('change')); // Это эмулирует событие
export {default as data1} from './data1'
export {default as data2} from './data2'
export {default as data3} from './data3'
export {default as data4} from './data4'
export {default as data5} from './data5'
export {default as data6} from './data6'
export {default as data7} from './data7'
export {default as data8} from './data8'
export {default as data9} from './data9'
import {* as arr} from 'путь к файлу'
window.addEventListener('DOMContentLoaded', () => {
const openSearch = document.querySelector('#open-search');
const inputSearch = document.querySelector('#input-search');
const closeSearch = document.querySelector('#close-search');
window.addEventListener('resize', () => {
const viW = Math.max(
document.documentElement.clientWidth,
window.innerWidth || 0
);
if (viW <= 1023) console.log('tada')
});
window.dispatchEvent(new Event('resize')); // Это эмулирует событие
openSearch.addEventListener('click', () => {
openSearch.setAttribute('type', 'submit');
inputSearch.classList.remove('input-collapsed');
closeSearch.classList.remove('search-form__close');
});
closeSearch.addEventListener('click', () => {
inputSearch.classList.add('input-collapsed');
closeSearch.classList.add('search-form__close');
});
})
documentElement
, а нужно было document.documentElement
pointer-events: none
. Вот и все. listItem.forEach(function (listItem) {
listItem.addEventListener('click', function () {
btnList.innerText = this.innerText;
inputNone.value = this.dataset.value;
dropdownList.classList.remove('_visible');
});
});
listItem.forEach(function (listItem) {
listItem.addEventListener('keyup', function (event) {
if (event.key === 'Enter') {
btnList.innerText = this.innerText;
inputNone.value = this.dataset.value;
dropdownList.classList.remove('_visible');
}
});
});
dropdownList.addEventListener('click', (e) => {
if (!e.target.classList.contains('dropdown__list-item')) return;
btnList.innerText = e.target.innerText;
inputNone.value = e.target.dataset.value;
dropdownList.classList.remove('_visible');
})
dropdownList.addEventListener('keyup', e => {
if (!e.target.classList.contains('dropdown__list-item')) return;
if (e.key !== 'Enter') return;
btnList.innerText = e.target.innerText;
inputNone.value = e.target.dataset.value;
dropdownList.classList.remove('_visible');
})
То есть если я выберу какую-то опцию в десктопной версии, перейду на мобилку, то там эта опция не будет выбрана. Так как в форме я буду отправлять значение именно того селекта, который нативный, ему нужно значение, выбранное на кастомной десктопной версии - задавать.
<select>
, то зачем вы присваиваете полученное после клика по пункту в кастомном dropdow значение другому элементу?<input type="text" name="select-category" value="" class="dropdown__input-hidden">
const inputNone = document.querySelector('.dropdown__input-hidden'); /* *** */ inputNone.value = this.dataset.value;
<select>
который с ваших слов вы обрабатываете в последующем.<select class="what_kind" name="boots"> *** </select>
const whatKindSlct = document.querySelector('.what_kind');
/* *** */
whatKindSlct.value = this.dataset.value;
// Или
// whatKindSlct.value = e.target.dataset.value;
// Если решите использовать мой код
const sound = document.getElementById('audio-node')
sound.addEventListener('timeupdate', () => {
console.log(sound.currentTime.toFixed(0))
})
if(exampleVar === true)
строго проверяется является ли переменная exampleVar
boolean и равна ли она trueif(exampleVar)
(так же можно прочитать как if(exampleVar == true)
) происходит преобразование типов при необходимости. То есть строка, число или массив тоже может вернуть true:target
display: none
, position: absolute
и обязательно с НЕ прозрачным фоном т.к. первый экран не скрывается, а далее обрабатывается :target
. Вот пример:<input type="radio">
и обработку :checked
с использованием ~
. Вот пример: