-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
123 lines (118 loc) · 3.67 KB
/
Copy pathscript.js
File metadata and controls
123 lines (118 loc) · 3.67 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
const cardsContainer = document.getElementById('cards-container');
const prevBtn = document.getElementById('prev');
const nextBtn = document.getElementById('next');
const currentEl = document.getElementById('current');
const showBtn = document.getElementById('show');
const hideBtn = document.getElementById('hide');
const questionEl = document.getElementById('question');
const answerEl = document.getElementById('answer');
const addCardBtn = document.getElementById('add-card');
const clearBtn = document.getElementById('clear');
const addContainer = document.getElementById('add-container');
//keep track of current card
let currentActiveCard = 0;
//store dom cards
const cardsEl = [];
//store card data
const cardsData = getCardsData();
// const cardsData = [
// {
// question:'What is this?',
// answer:'this is a thing'
// },
// {
// question:'What is this again?',
// answer:'this is a thing again'
// },
// {
// question:'What is this also?',
// answer:'this is a thing also'
// },
// {
// question:'What is this describe?',
// answer:'this is a thing to a thing'
// }
// ];
//create all cards
function createAllCards(){
cardsData.forEach((data,index)=>{
createCard(data,index);
})
}
//function to create a single card dom
function createCard(data,index){
const card = document.createElement('div');
card.classList.add('card');
if(index ===0){
card.classList.add('active');
}
card.innerHTML = `
<div class="inner-card">
<div class="inner-card-front">
<p>${data.question}</p>
</div>
<div class="inner-card-back">
<p>${data.answer}</p>
</div>
</div>
`;
card.addEventListener('click', () => card.classList.toggle('show-answer'));
cardsEl.push(card);
cardsContainer.appendChild(card);
updateCurrentText();
}
//
function updateCurrentText(){
currentEl.innerHTML = `${currentActiveCard + 1}/${cardsEl.length}`
}
//function to get cards from local storage
function getCardsData(){
const cards = JSON.parse(localStorage.getItem('cards'));
return cards === null ? [] : cards
}
//
function setCardsData(cards){
localStorage.setItem('cards',JSON.stringify(cards));
window.location.reload();
}
//call initilize cards
createAllCards();
//event listners
nextBtn.addEventListener('click',()=>{
cardsEl[currentActiveCard].className = `card left`;
currentActiveCard = currentActiveCard + 1;
if(currentActiveCard > cardsEl.length -1){
currentActiveCard = cardsEl.length -1
}
cardsEl[currentActiveCard].className = 'card active';
updateCurrentText();
})
prevBtn.addEventListener('click',()=>{
cardsEl[currentActiveCard].className = `card right`;
currentActiveCard = currentActiveCard - 1;
if(currentActiveCard < 0){
currentActiveCard = 0;
}
cardsEl[currentActiveCard].className = 'card active';
updateCurrentText();
});
showBtn.addEventListener('click',()=> addContainer.classList.add('show'));
hideBtn.addEventListener('click',()=> addContainer.classList.remove('show'));
addCardBtn.addEventListener('click',()=>{
const question = questionEl.value;
const answer = answerEl.value;
if(question.trim() && answer.trim()){
const newCard = {question,answer};
createCard(newCard);
questionEl.value = '';
answerEl.value = '';
addContainer.classList.remove('show');
cardsData.push(newCard);
setCardsData(cardsData);
}
})
clearBtn.addEventListener('click',()=>{
localStorage.clear();
cardsContainer.innerHTML = '';
window.location.reload();
})