51 lines
1.7 KiB
HTML
51 lines
1.7 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="ru">
|
||
|
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<title>Stateful app</title>
|
||
|
<link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.css">
|
||
|
</head>
|
||
|
|
||
|
<body class="container-fluid p-2 col-12 col-md-8 col-lg-6">
|
||
|
<div class="card text-center mb-2">
|
||
|
<div class="card-title">
|
||
|
Переменная в глобальном контексте
|
||
|
</div>
|
||
|
<div class="card-body">
|
||
|
<div class="card-text" id="gc-content"></div>
|
||
|
<button class="btn btn-primary col-6 mt-2" onclick="updateGcContent(1)">Up</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="card text-center">
|
||
|
<div class="card-title">
|
||
|
Переменная в хранилище
|
||
|
</div>
|
||
|
<div class="card-body">
|
||
|
<div class="card-text" id="ls-content"></div>
|
||
|
<button class="btn btn-primary col-6 mt-2" onclick="updateLsContent(1)">Up</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</body>
|
||
|
<script>
|
||
|
document.addEventListener('DOMContentLoaded', () => {
|
||
|
updateGcContent();
|
||
|
updateLsContent();
|
||
|
});
|
||
|
|
||
|
const updateGcContent = (value = 0) => {
|
||
|
const newState = (globalThis.myAppState || 0) + value;
|
||
|
globalThis.myAppState = newState;
|
||
|
document.getElementById('gc-content').innerText = newState;
|
||
|
}
|
||
|
|
||
|
const updateLsContent = (value = 0) => {
|
||
|
const lsKey = 'state';
|
||
|
const newState = parseInt(localStorage.getItem(lsKey) || 0) + value;
|
||
|
localStorage.setItem(lsKey, newState);
|
||
|
document.getElementById('ls-content').innerText = newState;
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
</html>
|