connection.query('SELECT * FROM menu', (err, result) => {
if(err) {
console.error(err);
return;
}
const index = result.reduce((acc, row) => ({...acc, [row.id]: row}), {});
const menu = [];
for(const row of result) {
if(row.parent_id === 0) {
menu.push(row);
continue;
}
const parent = index[row.parent_id];
if(!parent) {
console.warn(`Undefined parent with id ${row.parent_id}`);
continue;
}
if(!parent.children) {
parent.children = [];
}
parent.children.push(row);
}
console.log(menu);
});
function onLinkClick(event) {
event.preventDefault(); // выключаем стандартный функционал браузера (переход)
const {href} = event.target; // извлекли полный адрес из ссылки (даже для относительных ссылок вернет абсолютный адрес)
const hrefAsInHTML = event.target.getAttribute('href'); // извлекли href таким какой он есть в html
// любая Ваша логика
}
for(const link of document.getElementsByTagName('a')) {
link.addEventListener('click', onLinkClick);
}
file_load.onsubmit = function(){ var file = this.elements.myfile.files[0]; var xhr = new XMLHttpRequest(); xhr.open("POST", "upload", true); xhr.send(file); return false; }
const server = require('http').createServer();
const fs = require('fs');
const nodeStatic = require('node-static');
const file = new nodeStatic.Server('.', {
cache: 0
});
server.listen(3000, () => console.log("сервер запущен"));
server.on('request', (req, res) => {
if (req.url == '/upload') {
req.pipe(
fs.createWriteStream('file2.jpg')
).on('finish', () => res.end('ok'));
return;
}
file.serve(req, res);
});
function setRandomInterval(cb, minDelay, maxDelay, ...args) {
let timeoutID;
(function next() {
const delay = Math.floor(Math.random() * (maxDelay - minDelay) + minDelay);
timeoutID = setTimeout(() => {
cb(...args);
next();
}, delay);
})();
return function cancel() {
clearTimeout(timeoutID);
};
}
// использование:
setRandomInterval(func, 500, 2500); // просто запускаем с интервалом от 0.5с до 2.5с
const cancelInteraval = setRandomInterval(() => {
console.log('it work');
if(Math.random() > 0.7) {
cancelInteraval(); // таймаут можно отменить если вызвать возвращенную функцию
}
}, 200, 500);
setRandomInterval((arg1, arg2, arg3) => {
console.log(arg1, arg2, arg3);
}, 1000, 3000, 'arg1', 'arg2', 'arg3'); // подобно setTimeout и setInterval можно передать аргументы в колбэк
parent.querySelectorAll('.gallery-uploads-imgs__item').forEach(element => {
var img = new Image;
img.src = element.dataset.src
document.body.append(img)
let canvas = document.createElement('canvas')
let context = canvas.getContext('2d');
canvas.width = img.clientWidth
canvas.height = img.clientHeight
img.onload = function() {
context.drawImage(img, 0,0);
img.remove();
canvas.toBlob(function(blob) {
let uploadImageUrl = URL.createObjectURL(blob);
data.blobs.push( uploadImageUrl )
}, 'image/png');
}
})
И вообще какие еще варианты могут быть решения этой задачи? Кроме цикла for? Несмотря на то что в задании пишет именно с помощью него решить задачу. Просто для себя чтобы знать другие варианты.
document.getElementById('root').appendChild(
document.createTextNode(
Array.from(new Array(401), (_, i) => i).slice(4).join(' ')
)
);
import logBuilder from "./logs/logger";
const log = logBuilder(import.meta);