const getValue = el => el.textContent.match(/"(.*?)"/)[1];
// или
const getValue = ({ innerText: t }) =>
JSON.parse(t.slice(t.indexOf('['), -~t.indexOf(']'))).shift();
document.querySelectorAll('li button').forEach(function(n) {
n.addEventListener('click', this);
}, e => console.log(getValue(e.target)));
document.querySelector('ul').addEventListener('click', e => {
if (e.target.tagName === 'BUTTON') {
console.log(getValue(e.target));
}
});
<button onclick="doRequest()">кнопка</button>
function doRequest(){
$.post('myPhpFile.php', {
action: 'doFunctionOnServer'
}, function(data){
});
}
if($_POST['action'] && $_POST['action'] === 'doFunctionOnServer'){
$sql = "INSERT INTO test(id1, date)
VALUES ('$id1','$date')";
}
prevState => ({
counter: prevState.counter + 1,
counter: prevState.counter + 1,
})
prevState.counter === 0
, будет создаваться как:{
counter: 0 + 1,
counter: 0 + 1, // результат этого выражения попадет в созданный объект
}
{ counter: 1 }
function readTextFile(file, callback) {
var rawFile = new XMLHttpRequest();
rawFile.overrideMimeType("application/json");
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4 && rawFile.status == "200") {
callback(rawFile.responseText);
}
}
rawFile.send(null);
}
//использование:
readTextFile("/Users/Documents/workspace/test.json", function(text){
var data = JSON.parse(text);
console.log(data);
});
.background {
background: linear-gradient(45deg, magenta, aqua) 0 -150px no-repeat, #fff;
}
.b-popup
появляется, он закрывает собой .b-block
, возникает событие mouseleave, и его надо скрывать. А как он скрылся - его надо снова показывать, потому что на .b-block
возникает событие mouseenter. Ну вот так оно по кругу и происходит.pointer-events: none
для .b-popup
. Или поместите .b-popup
внутрь .b-block
.