Давайте посмотрим, что в программе……
Появится текстовое поле, в котором будет указано имя закладки. Будет еще одно текстовое поле, в котором адрес закладки (URL) будет указан пользователем. Там будет кнопка, которая сохранит закладку после нажатия, и она появится в поле ниже. Оттуда мы можем посетить сохраненный адрес, если захотим, затем мы можем удалить сохраненный адрес.
Прежде всего, используйте Bootstrap для дизайна. Загрузите с http://getbootstrap.com/ и используйте (версия 3.3.7). Затем мы спроектируем тестовую коробку и кнопки через Jumbotron.
<!DOCTYPE html> <!-- Shakib Limon --> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript"></script> <title>Site Bookmarker</title> <!-- Bootstrap core CSS --> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> </head> <body onload="fetchBookmarks()" > <div class="container"> <div class="header clearfix"> <h3 class="text-muted">Bookmarker</h3> </div> <div class="jumbotron"> <h3>Bookmark Your Site</h3> <form id="myForm"> <div class="form-group"> <lebel>Site Name</lebel> <input type="text" class="form-control" id="siteName" placeholder="Website Name"> </div> <div class="form-group"> <label>Site URL</label> <input type="text" class="form-control" id="siteUrl" placeholder="Website URL"> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> <div class="row marketing"> <div class="col-lg-12"> <div id="bookmarksResults"> </div> </div> </div> <footer class="footer"> <p>©2017 Bookmarker <i>by</i> Shakib Limon</p> </footer> </div> <!-- /container --> <script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script> <script src="js/bootstrap.min.js"></script> <script src="js/main.js"></script> </body> </html>
Работа над дизайном завершена, в браузере видно, но кнопка не работает, как дела? Причина не работает, пока не устанавливайте действие кнопки.
Теперь давайте настроим закладку для сохранения функции закладок……
/* Save,delete and fetch bookmark content with JSON */ // Listen for form submit document.getElementById('myForm').addEventListener('submit', saveBookmark); // Save Bookmark function saveBookmark(e){ // Get form values var siteName =document.getElementById('siteName').value; var siteUrl =document.getElementById('siteUrl').value; if(!validateForm(siteName, siteUrl)){ return false; } var bookmark = { name: siteName, url: siteUrl } if(localStorage.getItem('bookmarks') === null){ var bookmarks = []; bookmarks.push(bookmark); localStorage.setItem('bookmarks', JSON.stringify(bookmarks)); } else { var bookmarks = JSON.parse(localStorage.getItem('bookmarks')); bookmarks.push(bookmark); localStorage.setItem('bookmarks', JSON.stringify(bookmarks)); } document.getElementById('myForm').reset(); fetchBookmarks(); e.preventDefault(); }
Удаление закладок…….
// Delete bookmark function deleteBookmark(url){ var bookmarks = JSON.parse(localStorage.getItem('bookmarks')); for(var i =0;i < bookmarks.length;i++){ if(bookmarks[i].url == url){ bookmarks.splice(i, 1); } } localStorage.setItem('bookmarks', JSON.stringify(bookmarks)); fetchBookmarks(); }
Чтобы отобразить сохраненные данные закладок из локального хранилища браузера, необходимо получить эти данные. А также будет посетить и удалить кнопки.
// Fetch bookmarks function fetchBookmarks(){ var bookmarks = JSON.parse(localStorage.getItem('bookmarks')); var bookmarksResults = document.getElementById('bookmarksResults'); bookmarksResults.innerHTML = ''; for(var i = 0; i < bookmarks.length; i++){ var name = bookmarks[i].name; var url = bookmarks[i].url; bookmarksResults.innerHTML += '<div class="well">'+ '<h3>'+name+ ' <a class="btn btn-default" target="_blank" href="'+url+'">Visit</a> ' + ' <a onclick="deleteBookmark(\''+url+'\')" class="btn btn-danger" href="#">Delete</a> ' + '</h3>'+ '</div>'; } }
Теперь проверим форму ……….
// Validate Form function validateForm(siteName, siteUrl){ if(!siteName || !siteUrl){ alert('Please fill the form first then click submit '); return false; } // using regular expression here for valid url var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi; var regex = new RegExp(expression); if(!siteUrl.match(regex)){ alert('Please write valid URL here '); return false; } return true; }
Результат выглядит следующим образом:
#Счастливого обучения