<span id="element-3">Open modal</span>
<div id="element-1">
<div id="element-2">
Modal content
</div>
</div>
body {
width: 100vw;
height: 100vh;
background-color: green;
margin: 0;
padding: 0;
}
#element-3 {
border: 1px solid black;
background-color: white;
}
#element-1 {
display: none;
position: fixed;
background-color: blue;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
}
#element-1.show {
display: block;
}
#element-2 {
background-color: red;
width: 50vw;
height: 50vh;
margin: 0 auto;
}
var element1 = document.getElementById('element-1');
var element2 = document.getElementById('element-2');
var element3 = document.getElementById('element-3');
element3.onclick = function() {
element1.classList.add('show');
};
element1.onclick = function(event) {
if (event.target !== event.currentTarget) {
return;
}
element1.classList.remove('show');
};
split("-")
сделать split(" - ")
, но, вообще, лучше использовать JSON, чтобы название трека и артист были в отдельных полях. Это будет надёжнее работать, потому что входные данные могут быть непредсказуемыми. Например, название артиста будет содержать «–» с пробелами, и всё опять сломается. ::placeholder
. Можно сделать так:#my-phone-input::placeholder {
padding-left: 2em;
}
#my-phone-input
на корректный селектор для инпута, который у вас на скриншоте. Но, вообще, обычно у плейсхолдера такой же отступ, как и у текста в поле ввода, так что если вы для самого input зададите отступы с помощью padding, плейсхолдер это унаследует. const myMethod = event => {
if (event.target && event.target.id === 'swal-input1') {
// Поймали событие "input" для элемента #swal-input1
}
};
document.addEventListener('input', myMethod);
const { value: formValues } = await Swal.fire({/* . . . */});
document.removeEventListener('input', myMethod);
import SwalRaw from "sweetalert2";
import withReactContent from 'sweetalert2-react-content';
const Swal = withReactContent(SwalRaw);
Swal.fire({
html: (
<div>
<input onInput={console.log} id="swal-input1" className="swal2-input">
<input id="swal-input2" className="swal2-input">
</div>
),
});
title
, html
, confirmButtonText
, denyButtonText
, cancelButtonText
, footer
и closeButtonHtml
. &
в конце команды. Для примера: php bin/chat-server.php &
php bin/chat-server.php
, а сам этот скрипт вызывается с помощью HTTP-запроса из браузера. В этом случае имеется ввиду перезагрузка PHP-FPM, так? Если так, то самое простое решение проблемы с подвисанием скрипта — это способ 2. const alertLangs = langs => alert(langs);
localStorage.getItem(key: "langs");
.pipe(uglify())
.const babel = require('gulp-babel');
...
return src(path.src.js, {base: './src/assets/js/'})
.pipe(...)
.pipe(...)
.pipe(babel({
presets: ['@babel/preset-env']
}))
.pipe(uglify())
.pipe(...)
.pipe(...)
...
functions.js
:export function function1() {
alert('function 1');
}
export function function2 () {
alert('function 2);
}
landing.js
:import {function1} from './functions';
function1();
landing.js
и functions.js
, при этом function2
там не будет, потому что этот код не использовался.$dom = new \DOMDocument();
libxml_use_internal_errors(true);
if (!@$dom->loadHTML('содержимое страницы в виде HTML')) {
/** @var \LibXMLError $error */
$error = libxml_get_last_error();
if ($error->level > LIBXML_ERR_ERROR) {
throw new \Exception($error->message);
}
}
$xpath = new \DOMXPath($dom);
/** @var \DOMNodeList $form */
$form = $xpath->query('//form[@name="mainLoginForm"]');
if (!$form->length) {
throw new \Exception('Форма не найдена');
}
$post_data = [];
/** @var \DOMElement $input */
foreach ($xpath->query('.//input', $form->item(0)) as $input) {
$post_data[$input->getAttribute('name')] = $input->getAttribute('value');
}
$post_data['email'] = 'логин';
$post_data['password'] = 'пароль';
// В $post_data находятся все данные которые нужно отправлять
$arr1 = [1,2,3,4,5,7,2,8];
$arr2 = [2,9,5,5,7,2,8,1];
$len = count($arr1);
$conformity = [];
for($i = 0; $i < $len; $i++) {
/**
* $temp содержит нули в позициях, где числа в двух массивах
* по одному и тому же индексу не равны. Единицы — там, где равны.
*/
$temp = array_map(function($x,$y){return intval($x==$y);}, $arr1, $arr2);
// Элементы полученного массива суммируются и добавляются в отчётный массив
$conformity[] = array_sum($temp);
// Массив прокручивается на одну позицию
$arr1[] = array_shift($arr1);
}
//С помощью max($conformity) выбирается максимальное совпадение элементов
echo sprintf("Max conformity is %s%%\n", number_format(100*(max($conformity)/$len), 2));
$arr1 = [1,2,3,4,5,7,2,8];
$arr2 = [2,9,5,5,7,2,8,1];
function conformity($arr1, $arr2) {
$len = count($arr1);
$max = $curr = 0;
for($i = 0; $i < $len; $i++) {
array_map(function($x,$y)use(&$curr){$curr += intval($x==$y);}, $arr1, $arr2);
if($curr == $len) {
return 100;
}
$max = $max > $curr ? $max : $curr;
$curr = 0;
$arr1[] = array_shift($arr1);
}
return 100*($max/$len);
};
echo sprintf("Max conformity is %s%%\n", number_format(conformity($arr1, $arr2), 2));
class MyModel {
private $db;
public function __construct($db) {
$this->db = $db;
}
}
как это может помочь в работе с БД или на примере контроллера/модели что нибудь повседневное такое для PHP программиста , было бы очень полезно для меня!!
exception XMLHttpRequestException {
unsigned short code;
};
const unsigned short NETWORK_ERR = 101;
const unsigned short ABORT_ERR = 102;
function test(data) {
// taking care of data
}
function handler() {
if(this.readyState == 4 && this.status == 200) {
// so far so good
if(this.responseXML != null && this.responseXML.getElementById('test').firstChild.data)
// success!
test(this.responseXML.getElementById('test').firstChild.data);
else
test(null);
} else if (this.readyState == 4 && this.status != 200) {
// fetched the wrong page or network error...
test(null);
}
}
var client = new XMLHttpRequest();
client.onreadystatechange = handler;
client.open("GET", "test.xml");
client.send();
function handler()
— обработчик, а client.onreadystatechange = handler;
— привязка этого обработчика к экземпляру XMLHttpRequest.:last-child
— это последний элемент родительского контейнера. Совсем последний. После него не должно быть никаких элементов. Не получится использовать и :last-of-type
, так как last-of-type подразумевает последний элемент по имени, а не по классу (и если после последнего div.blog-item будет хотя бы один div на этом же уровне иерархии, этот div.blog-item перестанет быть last-of-type)..blog-item + .blog-item {
/* В ситуации с 5-ю элементами с классом .blog-item, которые строго
* следуют друг за другом, этот селектор применится
* к элементам со второго по пятый. Первый будет проигнорирован.
*/
}
ob_start();
// Тут какой-нибудь вывод
// В переменную $output заносится весь буфер, и её можно потом где-то использовать
$output = ob_get_contents();
// Очистка буфера
ob_end_clean();
ob_start();
// Тут какой-нибудь вывод
// В переменную $output заносится весь буфер, и её можно потом где-то использовать.
// При этом происходит очистка буфера.
$output = ob_get_clean();