Kompletny kod aplikacji w jednym pliku HTML, zawierającym kod JavaScript w tagu <script>
Nasza aplikacja działa, ale nie jest to jeszcze aż tak wygodne, jakim by mogło być, ponieważ musimy najpierw odpalić plik HTML w przeglądarce, a potem dodatkowo odpalić plik JavaScript z poziomu konsoli i zakładki snippets
.
Nasz HTML i JavaScript żyją swoim życiem. Musimy natomiast powiązać te pliki. Możemy to zrobić na 2 sposoby.
Pierwszym sposobem jest skopiować kod naszej aplikacji JavaScript z poprzedniej rozdziału (lub z pliku z zakładki snippets
) i wkleić go wewnątrz tagu <script></script>
bezpośrednio w pliku HTML (stwórz nowy plik z nową nazwą).
Nasz kod HTML musimy z kolei osadzić w szablonie HTML, co już robiliśmy tutaj):
<!DOCTYPE html>
<html>
<head>
<title>Todo App | kodujemywbiurze.pl</title>
</head>
<body>
<!-- kod HTML -->
<h1>Twoje zadania</h1>
<hr>
<button onclick="addTask()">dodaj zadanie</button>
<ul id="tasks-list">
</ul>
<button onclick="deleteAllTasks()">wyczyść listę</button>
<!-- dodaj poniżej otwierający tag <script> -->
<script>
/* tutaj wklejamy kod JavaScript pomiędzy otwierającym tagiem <script> i zamykającym tagiem </script> */
console.clear();
function getTasksFromLocalStorage() {
const storedTasksStringified = localStorage.getItem("tasks");
const storedTasks = JSON.parse(storedTasksStringified);
return storedTasks;
}
let tasks = getTasksFromLocalStorage() || [];
const tasksList = document.getElementById("tasks-list");
function appendTaskToTheTasksList(task, index) {
const li = document.createElement("li");
li.textContent = task + " ";
const deleteButton = document.createElement("button");
deleteButton.textContent = "usuń";
deleteButton.onclick = function() {
deleteTask(index);
}
li.appendChild(deleteButton);
const addAtIndexButton = document.createElement("button");
addAtIndexButton.textContent = "dodaj przed";
addAtIndexButton.onclick = function() {
addTaskAtIndex(index);
}
li.appendChild(addAtIndexButton);
tasksList.appendChild(li);
}
function renderTasks() {
tasksList.innerHTML = "";
tasks.forEach(appendTaskToTheTasksList);
console.log("Twoje zapisane zadania:", tasks);
}
function updateTasksInLocalStorage() {
localStorage.setItem("tasks", JSON.stringify(tasks));
}
function addTask() {
const newTask = prompt("Wpisz nowe zadanie:");
tasks.push(newTask);
updateTasksInLocalStorage();
console.log("Do Twoich zadań zostało dodane nowe zadanie:", newTask);
renderTasks();
}
function addTaskAtIndex(index) {
const newTask = prompt("Wpisz nowe zadanie:");
tasks.splice(index, 0, newTask);
console.log("Do Twoich zadań zostało dodane nowe zadanie:", newTask);
updateTasksInLocalStorage();
renderTasks();
}
function deleteTask(index) {
tasks.splice(index, 1);
updateTasksInLocalStorage();
renderTasks();
}
function deleteAllTasks() {
tasks = [];
console.log("Wszystkie zadania zostały usunięte...");
updateTasksInLocalStorage(tasks);
renderTasks();
}
renderTasks();
/* dodaj poniżej zamykający tag </script> */
</script>
</body>
</html>
Teraz możemy odpalić ten plik w przeglądarce, dzięki czemu aplikacja będzie działać natychmiast - bez uruchamiania żadnego dodatkowego pliku js w snippets
, jak to miało miejsce dotychczas!
Wszystko jest w jednym pliku - nasza prawdziwa aplikacja webowa, którą możemy zapisać na komputerze lub też przesłać mailem znajomemu, dzięki czemu pobierze plik i odpali na swoim komputerze.
W związku z tym pamiętaj, że gdybyś chciał/a pisać kod HTML i JavaScript w jednym pliku, to powinieneś/aś utworzyć plik HTML, po czym wypełnić go w następujący sposób:
<!DOCTYPE html>
<html>
<head>
<title>Tutaj wpisz tytuł swojej aplikacji/ strony internetowej</title>
</head>
<body>
<!-- tutaj poniżej pisz kod HTML -->
<!-- tutaj (po kodzie HTML) możesz pisać kod JavaScript wewnątrz tagu <script> -->
<script>
// kod JavaScript...
</script>
</body>
</html>