const { value } = event.target
const value = event.target.value
const { value, id: identificator } = event.target
const value = event.target.value
const identificator = event.target.id
PS. И как работает эта запись
= type => ev =>
? type это аргумент, а ev? Аргумент в аргумент?
const handleChange = type => event => {
// ...
}
const handleChange = (type) => {
return (event) => {
// ...
}
}}
Symbol.iterator
устанавливает поведение при итерации объекта. В случае с for..of
метод next
вызывается неявно. Но его присутствие и вид возвращаемого объекта с полями value
и done
обязывает протокол итератора. В value
содержится текущее значение, которое попадает в переменную n
, а в done
указан флаг окончания итерации.function fibonacci(max) {
return {
[Symbol.iterator]: function* iterator() {
let prev = 0
let cur = 1
while (true) {
[prev, cur] = [cur, prev + cur]
if (cur > max) {
return cur
}
yield cur
}
}
}
}
[...fibonacci(1500)] // Массив с числами Фибоначчи с ограничением «1500»
// Но при этом...
const iterable = fibonacci(1500)[Symbol.iterator]()
iterable.next() // {value: 1, done: false}
true
или false
. Поскольку вы возвращаете сам элемент, он приводится к логическому типу, соответственно 0
приводится к false
.function filterList(list) {
return list.filter(item => typeof item !== 'string')
}
const listOfBtn27 = [].slice.call(document.getElementsByClassName('btn27'))
const links = listOfBtn27.map(link => ({
html: link.textContent,
src: link.href,
title: link.title,
}))
console.log(links)
const result = arr
.filter(x => x % 2)
.map(x => x < 10 ? 'boom' : 'wow')
const result = []
for (let item of arr) {
if (item % 2) {
result.push(item < 10 ? 'boom' : 'wow')
}
}
// Вы получаете ноды через jquery и зачем-то получаете его
// дочерние элементы, которых в инпуте нет
// var input = $('.input-currency').children(0);
var input = $('.input-currency')
var eevent = new Event('input', { bubbles: true, cancelable: true })
// И пытаетесь применить стандартный DOM-метод.
// input.dispatchEvent(eevent);
// А вам нужно сперва получить dom-ноду из jquery-листа
input.get(0).dispatchEvent(eevent);
$('.input-currency').trigger('input')
const testElementHtml = this.TestElement.parentNode.innerHTML
const testElementClone = this.TestElement.cloneNode(true)
const wrap = document.createElement('div')
wrap.appendChild(testElementClone)
const testElementHtml = wrap.innerHTML
не работает в двух разных местах window.onresize
window.addEventListener('resize', function(event) {
// ...
})
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Access-Control-Allow-Origin: *
form.change(function() {
let isOk = true
// Перебираем элементы
for (let i = 0; i < inputs.length; i++) {
if (inputs[i].value == '') {
// Если неок, то останавливаем цикл — дальше нет смысла перебирать
isOk = false
break
}
}
// Если ок, добавляем класс
if (isOk) {
$('.btn-submit').addClass(_active)
}
})
Вопрос в том как можно воспроизвести файлы последовательно без одновременного запуска?
function play(list) {
let audioElements = []
for (let i = 0; i < list.length; i++) {
var audio = new Audio(list[i]['name'])
audioElements.push(audio)
if (i === 0) {
// Первое аудио запускаем
audioElements[i].play()
} else {
// Остальные — после окончания предыдущего
audioElements[i - 1].addEventListener('ended', function() {
audioElements[i].play()
list = list.slice(1)
})
}
}
}
async function voise(list) {
for (let i = 0; i < list.length; i++) {
const audio = new Audio(list[i]['name'])
// Запускаем аудио и ждём, когда закончится
await playAudio(audio)
}
}
async function playAudio(audio) {
audio.play()
await new Promise((reject, resolve) => {
audio.addEventListener('ended', () => {
resolve()
})
audio.addEventListener('error', () => {
reject()
})
})
}