const sourceElement = document.querySelector('.GrandMuther');
// во что заворачивать
const wrapper = document.createElement('div');
wrapper.classList.add('Mother');
Array.from(sourceElement.children)
.forEach(el => wrapper.appendChild(el));
sourceElement.appendChild(wrapper);
// «функция(не важно, сколько раз)»
const readBook = () => console.log('A B C');
// кнопка, которую много раз
const btnRead = document.getElementById('btn-read-book');
btnRead.addEventListener('click', readBook);
// другая кнопка, которая всё.
document.getElementById('btn-lights-out')
.addEventListener(
'click',
() => btnRead.removeEventListener('click', readBook)
);
// если это не сайт барбершопа, лучше обращаться к клиенту на «Вы»
let x = prompt('введи число', '')
let n = prompt('введи степень', '')
// не забывайте, что prompt() всегда возвращает строку, а не число
if (n < 0) {
// сообщение вывели, но выполнять всё равно продолжили
alert('степень должна быть больше нуля')
}
// переизобрели встроенную функцию Math.pow()
function pow(x, n) {
return x ** n; // возвели в степень 1-й раз
}
let result = x ** n // возвели в степень 2-й раз
alert(result)
// напоследок таки функцию вызывали, но результат — вникуда
pow(x, n);
return
. Она только печатает значения.function func_a()
{
return 5;
}
$result = func_a();
$result === 5; // true
function func_b()
{
return [1, 2, 3, 4, 5];
}
$result_array = func_b();
/**
* Collect array of prime numbers up to provided top limit
* @param int $top limit
* @return array
*/
function primes(int $top = 100):array
{
if ($top <= 1) return [];
$result = [2];
for ($i = 3; $i <= $top; $i += 2) {
for ($j = 3; $j < $i / 2; $j += 2) {
if ($i % $j === 0) continue 2;
}
array_push($result, $i);
}
return $result;
}
primes(55) // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53]
class Hamburger {
static SMALL = 'small';
static TOPPING_CHEESE = 'cheese';
// ...
// если первый символ не тот, прилепить его в начале
const keepPlus = event => {
const symbol = '+';
const {target} = event; // const target = event.target;
if (target.value[0] !== symbol) {
target.value = symbol + target.value;
}
}
// проверять при любом изменении
document.querySelectorAll('input[type=text]')
.forEach(el => el.addEventListener('input', keepPlus));
Здесь недостаток – помимо начального плюсика все прочие хотелки игнорируются. Например, юзер введёт ещё сотню плюсиков после первого, номер из всего 2 цифр и забудет указать код города. Юзеры они такие.input type="tel"
и его атрибут pattern
. Песочница.// JSON, типа
const data = [
{id: 1, text: 'я'},
{id: 2, text: 'буду'},
{id: 3, text: 'задавать умные вопросы'},
];
data.forEach(item => {
document.body.insertAdjacentHTML('beforeend', `
<div id="${item.id}">
—> <strong>${item.text}</strong> <—
</div>
`);
});
let isInIframe;
try {
isInIframe = window.self !== window.top;
} catch (e) {
isInIframe = true;
}
if (isInIframe) {
// мы в айфрейме
}
Дальше можно запрашивать, например, основной контент страницы, добавив параметры к запросу https://example.com/page.php?iframe=1
model
необходимо передать одну из готовых моделей. Поиском нашлись, например, модели richardpl/arnndn-modelsconst sum = number => {
if (number < 0) return 0;
// вспомогательная функция считает сумму ряда с шагом step
const sequenceSum = step => {
const q = Math.floor(number / step);
return q * (q + 1) * step / 2;
}
return sequenceSum(3) + sequenceSum(5) - sequenceSum(3 * 5);
}
// использование
sum(999999) // мгновенно: 233333166668