-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhobbies.html
More file actions
93 lines (84 loc) · 4.19 KB
/
hobbies.html
File metadata and controls
93 lines (84 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>data</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<style>
#hobbyInput { margin-top: 20px; }
</style>
<script>
var myHobbies = [];
function displayHobbies() {
let hobbiesList = "<ul class='list-group'>";
for (var i = 0; i < myHobbies.length; i++) {
if (myHobbies[i].fav) {
hobbiesList += "<li class='list-group-item list-group-item-success'>" + myHobbies[i].hobby +
" <button class='btn btn-danger btn-sm' onclick='delHobby(" + i + ")'>Delete</button>" +
" <button class='btn btn-warning btn-sm' onclick='toggleFav(" + i + ")'>Remove from favourite</button></li>";
} else {
hobbiesList += "<li class='list-group-item active'>" + myHobbies[i].hobby +
" <button class='btn btn-danger btn-sm' onclick='delHobby(" + i + ")'>Delete</button>" +
" <button class='btn btn-warning btn-sm' onclick='toggleFav(" + i + ")'>Add to favourite</button></li>";
}
}
hobbiesList += "</ul>"; // ✅ moved outside the for loop
document.getElementById("hobbies").innerHTML = hobbiesList;
}
let addHobby = () => {
let newHobby = document.getElementById("hobbyInput").value;
myHobbies.unshift({ hobby: newHobby, fav: false });
displayHobbies();
}
let delHobby = (index) => {
myHobbies = myHobbies.filter((hobby, i) => i !== index);
displayHobbies();
displayFav(); // ✅ keep favourites tab in sync
}
let toggleFav = (index) => {
myHobbies[index].fav = !myHobbies[index].fav;
displayHobbies();
displayFav(); // ✅ auto-update favourites tab
}
let displayFav = () => {
let favHobbies = myHobbies.filter(hobby => hobby.fav);
let favList = "<ul class='list-group'>";
for (let i = 0; i < favHobbies.length; i++) {
favList += "<li class='list-group-item list-group-item-success'>" + favHobbies[i].hobby + "</li>";
}
favList += "</ul>";
document.getElementById("favHobbies").innerHTML = favList;
};
</script>
</head>
<body onload="displayHobbies()">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Hobbies</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Favorites</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<h1 class="heading">My Hobbies</h1>
<div id="hobbies"></div>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<label>Hobbies:</label>
<input type="text" id="hobbyInput" placeholder="Add a new hobby"><br>
<button class="btn btn-primary" type="button" onclick="addHobby()">Add</button>
</div>
<div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
My favourite hobbies are:
<div id="favHobbies"></div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>