function storageAvailable(type) {
var storage;
try {
storage = window[type];
var x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
}
catch(e) {
return e instanceof DOMException && (
// everything except Firefox
e.code === 22 ||
// Firefox
e.code === 1014 ||
// test name field too, because code might not be present
// everything except Firefox
e.name === 'QuotaExceededError' ||
// Firefox
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
// acknowledge QuotaExceededError only if there's something already stored
(storage && storage.length !== 0);
}
}
if (storageAvailable('localStorage')) {
// Yippee! We can use localStorage awesomeness
}
else {
// Too bad, no localStorage for us
}
взаимодействие нейросетей с графическими элементами, а не только с математическимиНейросети работают только с «математическими элементами», с числами. Чтобы скормить картинку в сеть, её переводят в массив чисел: каждый пиксель в 1 (серое) или 3 (red, green, blue) значения от 0 до 255.
const timerKey = 'myTimer';
function onButtonClick() {
const D = new Date();
D.setTime(45 * 6e4 + D.getTime()); // добавить 45 минут
localStorage.setItem(timerKey, D.getTime()); // сохранить на случай обновления страницы
startTimer(D.getTime()); // показывать обратный отсчёт
}
document.getElementById("id1").addEventListener("click", onButtonClick);
function startTimer(ts) {
function showTime() {
const till = Math.max(0, che - Date.now()); // не меньше 0
// далее вывод этого времени в нужном месте
let seconds = Math.floor(till / 1000);
const hours = Math.floor(seconds / 3600);
seconds -= hours * 3600;
// ...
if (till > 0) setTimeout(showTime, 200);
}
const che = +ts; // чтобы число
showTime();
const savedChe = +localStorage.getItem(timerKey);
if (savedChe) startTimer(savedChe);
для получения процента выполнения проектанужен только объём работы: выполненный / общий. С натяжкой на реальность можно считать часы: потраченные / всего.
Есть скрипт который нужно после события click загружать заново.
var message = "Привет Хабр";
alert(message);
А вы сделайте так:function my_func() {
var message = "Привет Хабр";
alert(message);
}
и в коде страницы:<button id="btn">нажми</button>
<script src="my_script.js"></script>
<script>
document.addEvenListener('load', my_func); // при загрузке страницы выполнить
document.getElementById('btn').addEventListener('click', my_func); // и при нажатии кнопки
</script>
if (a == 1 && a == 2)
false
, т.к. не может быть одновременно равно и 1 и 2 (может последовательно), так что смело удаляйте весь блок.а
равно одному из списка», можно так:if ([1, 2, 100500].includes(a))
setTimeout(function () {
var counter = 0;
setTimeout(() => counter++, 1000); // через 1с увеличит на 1
console.log(counter); // выведет 0, сразу
setTimeout(() => {
console.log(counter);
nextselect.addClass('same-as-selected').trigger("click");
}, 1400); // через 1.4с "кликнет"
}, 500); // вообще всё начнётся только через пол-секунды
0 - начало
0.5 - начнёт выполняться внешняя ф-я:
зарядятся два таймера, в промежутке выведет 0
0.5 + 1 - counter увеличится на 1
0.5 + 1.4 - еще раз выведется counter, добавится класс, клик
const months_RU = 'Января,Февраля,Марта,Апреля,Мая,Июня,Данунаф,Лень,Дальше,Сами'
.split(',');
const parseDate = d => d.split('.')
.reduce((acc, c, i) => (acc.unshift(i & 1 ? months_RU[+c - 1] : +c), acc), [])
.join(' ');
parseDate('2020.06.01') // "1 Июня 2020"
['2020', '06', '01']
;.unshift()
;i & 1
вернёт 1 только для месяца;-1
.+
[1, 'Июня', 2020]
join(' ')
for (let i = 0; i < 50; ...
0
и < 50
, чтобы это исправить.out += i + ' '; // добавляется всегда, в любом случае
if ( i % 2 != 0) continue; // проверка уже потом
поменяйте порядок: сначала проверка, потом добавлениеdocument.querySelector('.out-2').innerHTML = out;
document.querySelector('.b-2').addEventListener('click', () => {
document.querySelector('.out-2').innerText = Array(25) // создали массив из 25 пустых слотов
.fill() // заполнили их undefined, чтобы можно было..
.map((n, i) => 2 * (i + 1)) // каждый заменить на (его индекс + 1) * 2
.join(' '); // и склеить в строку через пробел
})
все эти методы массива можно посмотреть на MDN.чтобы не раздувать файл, решил вынести общие функции и переменные в отдельный файл
calc_init.js?1
не удачная идея. Именно потому, что возникают описанные в вопросе проблемы.<script src="calc_init.js"></script>
. Пусть там просто определяется единственная function calc_init(n, id) {
let el_script = document.createElement("script");
el_script.src = `/scripts/script_${n}.js`;
el_script.setAttribute('defer', '');
document.body.appendChild(el_script);
let el_div = document.createElement("div");
el_div.setAttribute('id', id);
document.body.appendChild(el_div);
}
calc_init(1, 'id_calc_1'); // номер калькулятора и id HTML-элемента, куда его впихнуть
calc_init(3, 'id_calc_3');