function mySyncForEach(items, callback) {
for (let i = 0; i < items.length; i++) {
callback(items[i], i, items);
}
}
async function myAsyncForEach(items, callback) {
for (let i = 0; i < items.length; i++) {
await callback(items[i], i, items);
}
}
$(this).serialize();
$('#form button')
$('#from').on('submit', function (event) {
event.preventDefault();
// ...
})
var urls = [
'https://picsum.photos/id/345/2000/2000',
'https://picsum.photos/id/347/2000/2000',
'https://picsum.photos/id/349/2000/2000',
'https://picsum.photos/id/320/2000/2000',
'https://picsum.photos/id/351/2000/2000',
'https://picsum.photos/id/372/2000/2000'
];
var $wrapper = $('.wrapper');
urls.forEach(function (url) {
createImage(url).then(function (image) {
var $image = $(image);
$wrapper.append($image);
console.log({
width: $image.width(),
height: $image.height()
});
}).fail(function (image) {
console.error('Ошибка загрузки картинки');
});
});
function createImage(url) {
var $deferred = $.Deferred();
$('<img/>', {
src: url
}).one({
load: function () {
$deferred.resolve(this);
},
error: function () {
$deferred.reject(this);
}
});
return $deferred;
}
<ul>
<li class="white"><span class="one">Арсенал</span> <span class="two">100</span></li>
<li class="blue"><span class="one">Мечта</span> <span class="two">200</span></li>
<li class="red"><span class="one">Сибирь</span> <span class="two">300</span></li>
</ul>
<script>
const result = {};
document.querySelectorAll("ul > li").forEach($item => {
const [$one, $two] = $item.querySelectorAll("span.one, span.two");
result[$one.textContent] = parseInt($two.textContent, 10);
});
console.log(result);
</script>
const getHours = new Date().getHours();
if (getHours >= 23 && getHours <= 6) {
// ...
}
const $textarea = document.querySelector('textarea')
const $button = document.querySelector('button')
$button.addEventListener('click', event => {
const $html = parseHTML($textarea.value)
const img = $html.querySelector('img.header_subj_logo').outerHTML
const div = $html.querySelector('div.prob_list').outerHTML
$textarea.value = img + div
})
function parseHTML(html) {
const root = document.implementation.createHTMLDocument()
root.documentElement.innerHTML = html
return root.documentElement
}
function myPlugin(param) {
var id = param.id;
return {
param1: 100,
param2: 200,
method1: function () {
return id;
},
method2: function () {}
}
}
var plg = myPlugin({
id: "#block1"
})
console.log(plg.method1()); //> "#block1"
$('input[type="submit"]').on('submit', function (event) {
event.preventDefault();
//> Обработчик submit формы
});
/**
* Обработчик клика баннера
* @description
* При клике по баннеру сохраняем клик в LocalStorage
* Если к-во кликов равно 10, то очищаем клики и делаем что-то
*/
$('.banner').on('click', function () {
var count = saveBannerClick();
if (count === 10) {
clearBannerClick();
//> Делаем что-то! Показываем submit / форму
}
});
/**
* Получить количество кликов по баннеру
* @returns {?Number}
*/
function getBannerClick() {
var count = window.localStorage.getItem('bannerClick');
return count ? Number(count) : null;
}
/**
* Сохранить клик по баннеру
* @returns {Number} Актуальное количество кликов
*/
function saveBannerClick() {
var count = getBannerClick();
if (count === null) {
window.localStorage.setItem('bannerClick', 1);
return 1;
} else {
window.localStorage.setItem('bannerClick', ++count);
return count;
}
}
/**
* Очистить клили по баннеру
* @returns {void}
*/
function clearBannerClick() {
window.localStorage.removeItem('bannerClick');
}
const file = `
<template>
<div>
#{hello}
Component #{component.name} working!
</div>
</template>
<script>
export default {
name: '#{component.name}'
}
</script>
`;
const output = templater(file, {
hello: 'Hello from templater function',
component: {
name: "My Default Component Name"
}
});
console.log(output);
function templater(input, data, config) {
const setup = Object.assign({}, {
flag: 'g',
start: '\#\{',
end: '\}',
deep: true
}, config);
for (const key in data) {
if (Object.prototype.hasOwnProperty.call(data, key)) {
if (setup.deep && (typeof data[key] === "object" && data[key] !== null && !Array.isArray(data[key]))) {
const deep = {};
for (const name in data[key]) {
if (Object.prototype.hasOwnProperty.call(data[key], name)) {
deep[`${key}.${name}`] = data[key][name];
}
}
input = templater(input, deep, setup);
} else {
input = input.replace(new RegExp(setup.start + key + setup.end, setup.flag), data[key]);
}
}
}
return input;
}