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()
})
})
}
Array.prototype.sum = function() { /** ... */ }
const arr = [1, 2, 3]
// console.log в этом цикле выведет в консоль: 0, 1, 2, sum
// Т.е. «sum» всегда будет попадать в for..in-перечисления любых массивов в коде
for (let i in arr) {
console.log(i)
}
Object.defineProperty(Array.prototype, 'sum', {
enumerable: false,
value: function() {
let sum = 0
for (let i = 0; i < this.length; i++) {
if (typeof this[i] !== 'number' && !(this[i] instanceof Number)) {
throw new TypeError('Нечисловой массив')
}
sum += this[i]
}
return sum
}
})
position:absolute задаётся относительно ТОЛЬКО парент компонента
<picture>
<source srcset="small-image.png" media="(max-width: 720px)">
<img src="default-image.png" alt="">
</picture>
.image {
display: inline-block;
width: 1200px;
height: 700px;
background: url('default-image.png');
}
@media (max-width: 720px) {
.image {
width: 600px;
height: 400px;
background: url('small-image.png');
}
}
const imageDefault = 'default-image.png'
const smallImage = 'small-image.png'
const imageElement = document.getElementById('image')
function handleWindowResize() {
const width = window.innerWidth
if (width <= 720) {
imageElement.src = smallImage
} else {
imageElement.src = imageDefault
}
}
handleWindowResize()
window.addEventListener('resize', handleWindowResize)