-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathscript.js
67 lines (56 loc) · 2.1 KB
/
script.js
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
const imageContainer = document.getElementById('imageContainer');
const searchButton = document.getElementById('searchBtn');
const searchInput = document.getElementById('searchBox');
const loader = document.getElementById('loader');
let loadMoreBtn = document.getElementById('loadMoreBtn');
let searchValueData; //Searched images are stored here.
let page = 1;
//Secret Client Id
let clientId = 'GQy45otJ48h2DAZBNkjmrNqCm8K4KD6KHWhDoTL6orA';
searchButton.addEventListener('click',()=>{
let searchValue = searchInput.value.toString().replace(' ','-');
if (searchValue === '') {
return //Return User if Search Query is Empty
}
document.getElementById('imageSearch').innerText = `Images for - "${searchInput.value}"`
//Set searchValueData to new search value (from input).
searchValueData = searchValue;
//Clearing Last Search Images
imageContainer.innerHTML = ``;
page = 1;
loadMoreBtn.classList.add('activeBtn'); //Activating LoadMore Button
fetchImages()
})
let fetchImages = async()=>{
//API link
let url = `https://api.unsplash.com/search/photos?page=${page}&query=${searchValueData}&client_id=${clientId}`;
loader.style.display = 'flex';
await fetch(url)
.then(response =>{
if (response.ok) {
return response.json()
}else{
alert(response.status)
}
}).then(data =>{
//Using For Loop for every object in response.results Array
for (let i = 0; i < data.results.length; i++) {
renderImages(data.results[i])
}
page +=1;
})
loader.style.display = 'none';
}
let renderImages = (obj)=>{
//Creating a parent Element a div to store image in it.
let div = document.createElement('div');
let innerDivHTML = `
<img src="${obj.urls.full}" alt="Fetched Images">
`
div.innerHTML = innerDivHTML;
imageContainer.append(div);
}
loadMoreBtn.addEventListener('click',()=>{
//Calling Fetch Image function instead of search button because fetchImages() will append more images of same query instead of clearing the images.
fetchImages()
})