Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2017, 21:24
Интересующийся
Отправить личное сообщение для IDigle1 Посмотреть профиль Найти все сообщения от IDigle1
 
Регистрация: 26.06.2017
Сообщений: 11

Как сделать, чтоб сохранилась созданная javascript'ом кнопка после обновления стр.?
Недавно начал изучать js. Написал html кнопку с привязанной js функцией, при нажатии на которую появляется 2 prompt окна где надо написать ссылку на какой либо сайт и задать этой ссылке какое либо имя, после чего создается кнопка-ссылка на указанный нами сайт. После перезагрузки страницы кнопка исчезает. Как сделать так чтоб она сохранилась?

js код этой кнопки:
var numId = 2;
        
        function add(){
            var p = document.getElementById('box');
            var link = prompt('Введите адрес ссылки');
            var linkName = prompt('Введите имя ссылки не более 15 символов');
            
            if(link == null || link == ""  || linkName == null || linkName == "") {
                alert('Ошибка: ссылка или имя ссылки небыли указаны');
                console.log("Error: link or linkName equal")
            } else {
                var lengthName = linkName.length;
            
                if(lengthName > 15) {
                    alert('Имя ссылки должно содержать не более 15 символов');
                } else {
            
                    numId++;
                    
                    p.innerHTML += '<div class="button-block" id="button-block' + numId + '"><form action="http://' + link + '/" target="_blank"><button class="button">' + linkName + '</button></form><button class="delete-button" onclick="del()">X</button></div>';
                
                }
            }
        }
Ответить с цитированием
  #2 (permalink)  
Старый 26.06.2017, 21:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

IDigle1,
искать документацию и примеры с LocalStorage
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2017, 22:38
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Наверное как то так!
var numId = 2;
			document.getElementById('box').innerHTML = localStorage.getItem('data');  
        function add(){
            var p = document.getElementById('box');
            var link = prompt('Введите адрес ссылки');
            var linkName = prompt('Введите имя ссылки не более 15 символов');
            
            if(link == null || link == ""  || linkName == null || linkName == "") {
                alert('Ошибка: ссылка или имя ссылки небыли указаны');
                console.log("Error: link or linkName equal")
            } else {
                var lengthName = linkName.length;
            
                if(lengthName > 15) {
                    alert('Имя ссылки должно содержать не более 15 символов');
                } else {
            
                    numId++;
                    
                    p.innerHTML += '<div class="button-block" id="button-block' + numId + '"><form action="http://' + link + '/" target="_blank"><button class="button">' + linkName + '</button></form><button class="delete-button" onclick="del()">X</button></div>';

                    localStorage.setItem('data', p.innerHTML);
                }
            }
        }
Ответить с цитированием
  #4 (permalink)  
Старый 26.06.2017, 23:20
Интересующийся
Отправить личное сообщение для IDigle1 Посмотреть профиль Найти все сообщения от IDigle1
 
Регистрация: 26.06.2017
Сообщений: 11

Может я где накосячил, но после этого вообще весь контент исчез, кроме одного дива)
Ответить с цитированием
  #5 (permalink)  
Старый 26.06.2017, 23:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

document.getElementById('box').innerHTML += localStorage.getItem('data');


тогда вот так, поправьте вторую строчку
Ответить с цитированием
  #6 (permalink)  
Старый 26.06.2017, 23:44
Интересующийся
Отправить личное сообщение для IDigle1 Посмотреть профиль Найти все сообщения от IDigle1
 
Регистрация: 26.06.2017
Сообщений: 11

Спасибо большое, работает) Вот только функция удаления кнопки перестала работать) и над кнопкой надпись null появилась

Последний раз редактировалось IDigle1, 26.06.2017 в 23:48.
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2017, 00:07
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

нужен полный html чтобы мы вам помогли без гадания на кофейной гуще
Ответить с цитированием
  #8 (permalink)  
Старый 27.06.2017, 00:43
Интересующийся
Отправить личное сообщение для IDigle1 Посмотреть профиль Найти все сообщения от IDigle1
 
Регистрация: 26.06.2017
Сообщений: 11

Еще раз спасибо вам огромное за помощь, друг мой проблему свою я уже решил. Если вдруг интересно что у меня за зверь получился вот:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Меню</title>
</head>
<body>
    <div class="box" id="box"><!-- меню с кнопками -->
        <div class="add-del-box"><!-- контейнер с кнопкой "добавить" -->
            <button class="button" onclick="add()" id="add">Добавить</button>
        </div>
    </div>
    
    
    
    <style type="text/css">

body {
            padding: 0;
            margin: 0;
        }
        
        button {
            cursor: pointer;
        }
        
        div.box { /* меню с кнопками */
            position: relative;
            padding: 50px;
            background: rgb(100,100,100);
            width: 350px;
            height: 1000px;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
        }
        
        .add-del-box { /* контейнер с кнопкой "добавить" */
            position: fixed;
            background: rgb(80,80,80);
            width: 450px;
            height: 200px;
            left: 0;
            bottom: 0;
            height: 70px;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
            text-align: center;
            
        }
        
        .button { /* кнопки-ссылки */
            display: inline-block;
            font-size: 20px;
            color: black;
            margin-top: 10px;
            width: 250px;
            height: 50px;
            background: pink;
            border: 0;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
            transition: 0.2s;
        }
        
        .button-block form {
            display: inline-block;
        }
        
        .delete-button { /* кнопка удаления кнопки-ссылки */
            display: inline-block;
            font-size: 20px;
            color: black;
            margin: 10px;
            width: 50px;
            height: 50px;
            background: pink;
            border: 0;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
        }
        
        .button:hover {
            color: blue;
            margin-left: 10px;
        }
        
        .add { /* Кнопка "добавить" */
            font-size: 20px;
            color: black;
            margin-top: 10px;
            width: 250px;
            height: 50px;
            background: pink;
            border: 0;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
        }

</style>
       
    <script type="text/javascript">

var numId = 1; 
        
        numId = localStorage.getItem('numId');
        document.getElementById('box').innerHTML += localStorage.getItem('data' + numId);

        function add(){
            var p = document.getElementById('box');
            var link = prompt('Введите адрес ссылки');
            var linkName = prompt('Введите имя ссылки не более 15 символов');
            
            if(link == null || link == ""  || linkName == null || linkName == "") {
                alert('Ошибка: ссылка или имя ссылки небыли указаны');
                console.log("Error: link or linkName equal")
            } else {
                var lengthName = linkName.length;
            
                if(lengthName > 15) {
                    alert('Имя ссылки должно содержать не более 15 символов');
                } else {
            
                    numId++;
                    
                    p.innerHTML += '<div class="button-block" id="button-block' + numId + '"><form action="http://' + link + '/" target="_blank"><button class="button">' + linkName + '</button></form><button class="delete-button" onclick="del()">X</button></div>';
                    localStorage.setItem('data' + numId, p.innerHTML);
                    localStorage.setItem('numId', numId);
                }
            }
        }
        
        function del() { //функция удаления кнопки
            var g = document.getElementById('button-block' + numId);
            localStorage.removeItem('data' + numId);
            g.outerHTML = '';
            numId--;
        }

</script>
        
</body>
</html>


И все же есть вопрос. Как избавится от этого null, который появился выше кнопок?
Все таки есть баг. после перезагрузки если удалить одну ссылку - удаляются все.

Последний раз редактировалось IDigle1, 27.06.2017 в 01:20.
Ответить с цитированием
  #9 (permalink)  
Старый 27.06.2017, 01:06
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от IDigle1 Посмотреть сообщение
И все же есть вопрос. Как избавится от этого null, который появился выше кнопок?
строка 4

if (localStorage.getItem('data' + numId)) document.getElementById('box').innerHTML += localStorage.getItem('data' + numId);
Ответить с цитированием
  #10 (permalink)  
Старый 27.06.2017, 01:10
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

второй баг у меня не наблюдается
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, чтоб скрипт работал во всех браузерах? Владимир Седов Элементы интерфейса 2 24.12.2010 12:19
Как сделать? При выходе мышкой за пределы окна браузера, начинает грузится другая стр alb Events/DOM/Window 13 01.09.2010 12:19
div - затемнялка под div- кнопка, как сделать? webmonster2008 Общие вопросы Javascript 2 30.07.2010 17:09
как сделать так, чтоб браузер смог отличить знак больше от закрытия тэга? FirstFrost Общие вопросы Javascript 8 17.07.2010 22:55
Многостраничная галерея на lightbox.js Как сделать? MASTER Общие вопросы Javascript 9 24.07.2009 14:38