function increaseValues(obj) {
// Увеличиваем значение value и присваиваем ему activeValue + 1
if (obj.hasOwnProperty('value')) {
obj.value = obj.user.activeValue + 1;
}
// Рекурсивно вызываем функцию для всех вложенных объектов
for (let key in obj) {
if (typeof obj[key] === 'object') {
increaseValues(obj[key]);
}
}
}
const obj = {
user: {
activeValue: 2,
accountList: {
112211: {
value: 1,
},
112212: {
value: 2,
},
},
},
};
increaseValues(obj);
console.log(obj);
Status Code
. Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать 404
и клиент пусть сам генерирует себе ошибку.return StatusCode
. Есть нормальные методы StatusResult
к которым относятся Ok()
, BadRequest()
и тот же NotFound()
. В эти методы можете передавать какие-то мета-данные если вам нужно. Либо можете использовать Response.Headers
. Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был на все руки мастер, можете сделать что-то типа такого:return NotFound(new { message = "Omg, Not Found!!!" });
JS
вытянуть ошибку? Я бы использовал просто ajax
:$.ajax({
url: '...',
method: 'get',
success: (response): {
let data = JSON.parse(response.responseText);
console.log(data.message); //Omg, Not Found!!!
}
});
$.ajax({
url: 'https://domain.com/router/',
method: 'post', // NOT A TYPE
data: JSON.stringify({ ... }),
dataType: 'application/json; charset=utf-8',
success: (response) => { ... },
error: (response) => { ... }
})
.done
и .fail
срабатываю, когда у вас получилось либо не получилось сделать запрос. success
и error
срабатывают в зависимости от ответа сервера. let items = document.querySelectorAll("[class^='filter-block']")
let items.forEeach(item => {
// ...
});
[class^='filter-block']
означает, что вы будете делать выборку по всем элементам, у которых значение указанного аттрибута (В нашем случае, мы указали аттрибут class
) будет начинаться (Это делается при помощи такой конструкции как ^=
) с указанного значения (Мы указали filter-block
), после которого могут следовать другие символы (Т.е. filter-block2
, filter-block-filter-block-filter-block
, filter-block-123
, filter-blockkkkkkkkkkkkkkkkk
и так далее, это всё будет проходить через выборку, т.к. имеет общее начало filter-block
) let data = { prop: value }
let jsonData = JSON.stringify(data)
$.ajax({
url: 'https://domain.com/route/to/endpoint/',
method: 'post',
data: jsonData,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: (response) = { console.log(response) }, // catch Ok
error: (response) => { console.log(response) } // catch other (BadRequest, NotFound e.t.c)
})
document.querySelectorAll('.menu-button')
возвращает массив элементов, а не один элемент. В вашем случае нужно так:let buttons = document.querySelectorAll('.menu-button')
buttons.forEach(btn => {
btn.onclick = () => {...}
});
document.querySelectorAll('.menu-button')
, а document.querySelector('.menu-button').onclick = () => { ... }
<video id="myVideo" autoplay>
<source src="your_video.mp4" type="video/mp4">
</video>
document.getElementById('myVideo').play();
<a href="#" onclick="openModal()">Открыть видео</a>
<!-- Модальное окно -->
<div class="overlay" id="video1">
<div class="modal">
<div class="video__title">
</div>
<div class="video" id="youtube">
<iframe width="640" height="360" id="player" src="https://www.youtube.com/embed/J32MrXDK6oI?version=3&enablejsapi=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<a href="#" onclick="closeModal()" class="close">Закрыть</a>
</div>
</div>
<script type="text/javascript" src="http://www.youtube.com/player_api"></script>
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
events: {
'onReady': onPlayerReady
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function openModal() {
document.getElementById('video1').style.display = 'block';
}
function closeModal() {
document.getElementById('video1').style.display = 'none';
player.stopVideo();
}
let response = await fetch('https://url.address.com/routes/') <-- получаем "ответ"
let data = await response.json() <-- получаем данные в формает json
JSON.parse(...)
. <input type='hidden' id='open-modal' data-toggle='#modal' data-target='#modal-id' />
let isOpen = false;
$('#item-to-open-modal').on('mouseenter', () => {
if (!isOpen) {
document.getElementById('open-modal').click()
isOpen = true;
}
})
$('#item-to-open-modal').on('mouseleave', () => {
if (isOpen) {
document.getElementById('close-modal').click()
isOpen = false
}
})