Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать, чтоб сохранилась созданная javascript'ом кнопка после обновления стр.? (https://javascript.ru/forum/misc/69481-kak-sdelat-chtob-sokhranilas-sozdannaya-javascript%27om-knopka-posle-obnovleniya-str.html)

IDigle1 26.06.2017 21:24

Как сделать, чтоб сохранилась созданная 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>';
                
                }
            }
        }

рони 26.06.2017 21:37

IDigle1,
искать документацию и примеры с LocalStorage

j0hnik 26.06.2017 22:38

Наверное как то так!
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);
                }
            }
        }

IDigle1 26.06.2017 23:20

Может я где накосячил, но после этого вообще весь контент исчез, кроме одного дива)

j0hnik 26.06.2017 23:29

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


тогда вот так, поправьте вторую строчку

IDigle1 26.06.2017 23:44

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

j0hnik 27.06.2017 00:07

нужен полный html чтобы мы вам помогли без гадания на кофейной гуще :)

IDigle1 27.06.2017 00:43

Еще раз спасибо вам огромное за помощь, друг мой:) проблему свою я уже решил. Если вдруг интересно что у меня за зверь получился вот:
<!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, который появился выше кнопок?
Все таки есть баг. после перезагрузки если удалить одну ссылку - удаляются все.

j0hnik 27.06.2017 01:06

Цитата:

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

строка 4

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

j0hnik 27.06.2017 01:10

второй баг у меня не наблюдается :(


Часовой пояс GMT +3, время: 23:46.