прошу помочь с LocalStorage никак не могу разобраться с плюсами, то они прибавляются, то они вообще исчезают, а мне нужен всего один

js

let txt;
let div;
let kil;
let rer;
let pop;
let rerir;
let rerer;
let clas = 0;
let rtg;
let r;
let io = document.querySelector('#production_conteiner');
// io.innerHTML = localStorage.getItem('key');
function myFunction(){
  let x = document.getElementById("myFile");
  if ('files' in x) {
    if (x.files.length == 0) {
      txt = "а где файл?";
    } else {
      for (let i = 0; i < x.files.length; i++) {
        let file = x.files[i];
        if ('name' in file) {
          txt = file.name;
          r = document.getElementsByClassName('img_popap')[0].style.backgroundImage = "url('" + 'товар/' + txt + "')";
          document.getElementsByClassName('img_0')[0].src = 'товар/' + txt;
        }
      }
    }
  } 
}
let awa = document.querySelectorAll('#production_conteiner > div');
document.addEventListener('DOMContentLoaded', function () {
  const slider = new ChiefSlider('.slider', {
    loop: true
  });
});
function dayn() {
  io.innerHTML += '<div class="imd_' + clas + '" onclick="addNum(this)"><a href="#popap_2" class="wew"><p class="p" id="p' + clas + '"></p><figure id="vyu"><img src="" class="myImg' + clas + '"><figcaption class="figcaption_1" id="figcaption_1' + clas + '"></figcaption><figcaption class="figcaption_2" id="figcaption_2' + clas + '"></figcaption></figure></a></div>';
  rtg = "imd_" + clas;
  div = document.getElementsByClassName(rtg);

//   let ghj = document.querySelector('.body');
// function fuf() {
//   ghj.innerHTML += '<main class="gfd">mv</main>';
//   localStorage.setItem('key', document.querySelector('.body').innerHTML);
// }

  let popip = document.querySelector(".textarea").value;
  rerir = document.querySelector("#p" + clas).innerHTML = popip;
  pop = document.getElementById("popop").value;
  rer = document.querySelector("#figcaption_1" + clas).innerHTML = pop;
  let popop = document.getElementById("pop").value;
  rerer = document.querySelector("#figcaption_2" + clas).innerHTML = popop;
  document.querySelector(".myImg" + clas).src = 'товар/' + txt;
  clas++;
  localStorage.setItem('key', io.innerHTML);
}
let elements = document.querySelectorAll("#production_conteiner div");
function addNum(el) {
  let dever = el.className;
  let weber = document.getElementsByClassName(dever)[0];
  let rerir_1 = weber.querySelector(".p").innerHTML;
  document.querySelector(".textarea_1").innerHTML = rerir_1;
  let rer_1 = weber.querySelector(".figcaption_1").innerHTML;
  document.querySelector(".popop_1").innerHTML = rer_1;
  let rerer_1 = weber.querySelector(".figcaption_2").innerHTML;
  document.getElementById("pop_1").value = rerer_1;
  document.querySelector(".myImg").src = 'товар/' + txt;
};
io.innerHTML = localStorage.getItem('key');
for (let i = 0; i<1; i++) {
  io.innerHTML += '<figure class="fig"><a href="#popap_1"><img src="img/плюс.png" type="button" href="#popap_1"></a></figure>';
}
// localStorage.clear()

css

body, html {
    height: 100%;
    width: auto;
    margin: 0px;
}
ul {
    list-style: none;
}
.li_header {
    text-align: center;
    margin-top: 1vw;
    position: relative;
    right: 2.8vw;
}
body {
    background-image: url(img/фон.png);
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: 100% auto;
}
.li_header li {
    display: inline-block;
    color: #ffffff;
    font-size: 2.5vw;
    font-family: 'Roboto', sans-serif;
    margin-top: 10px;
}
.li_1 {
    margin-right: 5.2%;
    position: relative;
    bottom: 2.2vw;
}
.li_2 {
    position: relative;
    bottom: 2.2vw;
}
.li_3 {
    margin-right: 5.2%;
    position: relative;
    bottom: 2.2vw;
}
.li_4 {
    position: relative;
    bottom: 2.2vw;
}
.li_6 {
    margin-left: 5.6%;
    margin-right: 5.6%;
    margin-top: 0%;
}
.icon {
    width: 10.2vw;
    height: auto;
}
header {
    position: fixed;
    top: 0px;
    left: 0px;
    right: 0px;
    background-color: #885128;
    height: 12.2vw;
    width: 100%;
    z-index: 1;
}
footer {
    width: 100%;
    height: 32.9vw;
    background-color: #000000;
}
.text_p_footer {
    font-family: 'Roboto', sans-serif;
    color: #ffffff;
    font-size: 1.9vw;
    margin-left: 12.6%;
    position: relative;
    bottom: -7.7vw;
}
.li_p_footer li img {
    /* display: flexbox;
    flex-direction: column; */
    width: 19%;
    height: auto;
    /* float: left; */
}
.li_p_footer li a p {
    color: #ffffff;
    font-family: 'Roboto', sans-serif;
    font-size: 2.3vw;
    float: right;
    position: relative;
    left: -30%;
}
.li_p_footer li {
    margin-left: 50%;
    display: flex;
    flex-direction: row;
}
.li_p_footer {
    margin-top: -9.6vw;
}
.li_p_footer {
    position: relative;
    /* bottom: 8.1vw; */
}
.img_footer {
    width: 12.1%;
    height: auto;
    margin-left: 16.5%;
    position: relative;
    bottom: -25%;
}
.geo {
    width: 4%;
    height: auto;
    float: left;
    margin-top: 12px;
}
a:link {
    text-decoration: none;
    color: #ffffff;
    font-family: 'Roboto', sans-serif;
}
a:visited {
    text-decoration: none;
    color: #ffffff;
    font-family: 'Roboto', sans-serif;
}
a:active {
    text-decoration: none;
    color: #ffffff;
    font-family: 'Roboto', sans-serif;
}
footer ul {
    margin-left: 5.1%;
    margin-bottom: 2.56vw;
}
#production_conteiner {
    color: #000000;
    margin-bottom: 7.4vw;
    display: flex;
    justify-content: space-around;
    flex-wrap: wrap;
}
figure {
    width: auto;
    background-color: #EDF1EF;
    width: 310px;
    height: 344px;
    margin-top: 4.4vw;
}
figure img {
    height: 278px;
    width: 310px;
}
figcaption {
    color: #000;
}
.figcaption_2 {
    font-size: 24px;
    float: right;
    margin-top: 13.5px;
    margin-right: 9px;
}
.figcaption_1 {
    float: left;
    font-size: 18px;
    width: 50%;
    word-wrap: break-word;
    margin-left: 15px;
    margin-top: 10px;
}
#popap_1, #popap_2 {
    position: fixed;
    background-color: rgb(0, 0, 0, 0.8);
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    z-index: 3;
}
#popap_2:target, #popap_1:target {
    opacity: 1;
    visibility: visible;
}
.popap_body {
    width: 80.8%;
    height: 50vw;
    background-color: #501504;
    z-index: 532;
}
.textarea, .textarea_1 {
    width: 86%;
    height: 16.3vw;
    margin-top: 2%;
    margin-left: 6.5%;
    border: 0px;
    background-color: #824C20;
    font-size: 1.5vw;
    padding: 1vw;
}
.input_rubli {
    height: 4.5vw;
    width: 46%;
    margin-top: 2%;
    border: 0px;
    background-color: #824C20;
    text-align: center;
    font-size: 2.3vw;
}
.popap_header {
    height: 9.2%;
    width: 100%;
    background-color: #824C20;
}
#cloze_1 {
    height: auto;
    width: 3.4%;
    float: right;
    margin-top: 0.9%;
    margin-right: 6.5%;
}
#korzina {
    height: auto;
    width: 4%;
    float: left;
    margin-top: 0.9%;
    margin-left: 6.5%;
}
.name_popap, .popop_1 {
    width: 83%;
    height: 7.3vw;
    border: 0px;
    background-color: #824C20;
    font-size: 1.5vw;
    padding: 1vw;
    margin-top: -2.3vh;
}
.ul_input {
    float: right;
    width: 50%;
    height: 20.5vw;
    margin-bottom: 2vw;
}
#cloze_2 {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0%;
    left: 0%;
}
.image_popap {
    width: 43.5%;
    height: 20.5vw;
    /* margin-top: 2vw; */
    margin-left: 6.5%;
    float: left;
    background-color: #824C20;
}
#myFile {
    text-align: center;
}
.img_popap {
    margin: 0% 18%;
    width: 64%;
    height: 100%;
    background-color: #ffffff;
}
.fig {
    background-color: transparent;
}
.fig img {
    width: 190px;
    height: 190px;
    margin: 77px 60px;
}
.popap_mini_body {
    margin-top: 2vw;
}
#mySearch {
    width: 38.3vw;
    height: 7.4vw;
    background-color:#824C20;
}
.burger {
    padding: 1vw;
    width: 38.3vw;
    height: 7.4vw;
    background-color:#824C20;
    font-size: 1.6vw;
}
.rew {
    width: 30.4vw;
    height: 7.2vw;
    padding-left: 2vw;
    font-size: 2.6vw;
    background-color:#824C20;
    outline: none;
    box-sizing: border-box;
    border: 0px;
}
.imw_1 {
    height: 6.5vw;
    margin: 0.35vw;
    width: auto;
    float: right;
}
.ryt {
    margin-right: 7vw;
    margin-left: 7.4vw;
    margin-top: 17.7vw;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    z-index: -1;
}
.p {
    position: absolute;
    font-size: 0px;
    z-index: -4;
}

html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/style_2.css">
    <link rel="stylesheet" href="chief-slider.min.css">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500;700;300&display=swap" rel="stylesheet">
</head>
<body onload="myFunction()">
    <div class="div">
        <header id="header">
            <ul class="li_header">
                <li class="li_1"><a href="index.html">Главная</a></li>
                <li class="li_2"><a href="production.html">Продукция</a></li>
                <li class="li_6"><img src="img/иконка.png" class="icon"></li>
                <li class="li_3"><a href="basket.html">Корзина</a></li>
                <li class="li_4"><a href="help.html">Помощь</a></li>
            </ul>
        </header>
        <main class="content">
            <div class="ryt">
                <div id="mySearch"><input type="text" class="rew" id="input"><img class="imw_1" src="img/поиск.png"></div>
                <select class="burger">
                    <option>Полуфабрикаты собственного производства</option>
                    <option>Полуфабрикаты других производителей</option>
                    <option>Колбасы и деликатесы</option>
                    <option>Овощи, ягоды, грибы</option>
                    <option>Молочная продукция</option>
                    <option>Сыры</option>
                    <option>Бакалея</option>
                </select>
            </div>
            <main id="production_conteiner">
                <!-- <figure class="fig">
                    <a href="#popap_1">
                    <img src="img/плюс.png" type="button" href="#popap_1">
                    </a>
                </figure> -->
            </main>
        </main>
        <footer>
            <img src="img/иконка_footer.png" class="img_footer">
            <p class="text_p_footer">
            <img src="img/геолокация.png" class="geo">
         город Ангарск<br>
         18мкр., д. 19,<br>
         вход со двора,<br>
         около 1 подъезда
            </p>
            <ul class="li_p_footer">
                <li><a href="tel: ********"><img src="img/вотсап.png" class="img_contact_1"><p>********</p></a></li>
                <li><a href=""><img src="img/инстограмм.png" class="img_contact_3"><p></p></a></li>
                <li><a href="tel: ********"><img src="img/вайбер.png" class="img_contact_1"><p>********</p></a></li>
            </ul>
        </footer>
    </div>
    <div id="popap_1">
        <a href="#header" id="cloze_2" onclick="dayn()"></a>
        <div class="popap_body">
            <div class="popap_header">
                <a href="#header" onclick="dayn()"><img src="img/закрыть.png" id="cloze_1"></a>
            </div>
            <div class="popap_mini_body">
            <div class="image_popap">
                <div class="img_popap">
            <input type="file" id="myFile" onchange="myFunction()"></div></div>
            <div class="ul_input">
                <ul class="">
                    <li><textarea name="name" id="popop" class="name_popap">название продукта</textarea></li>
                    <li><div type="text" class="input_rubli">
                        <div class="slider">
                        <div class="slider__wrapper">
                          <div class="slider__items">
                            <div class="slider__item">
                              штуки
                            </div>
                            <div class="slider__item">
                              граммы
                            </div>
                          </div></div></div></div></li>
                    <li><input type="text" class="input_rubli" id="pop" value="цена за шт."></li>
                </ul>
            </div>
        </div> 
            <textarea name="opisanie" id="textarea" class="textarea">описание продукта</textarea>
            </div>
        </div>
    <div id="popap_2">
        <a href="#header" id="cloze_2" onclick="terte()"></a>
        <div class="popap_body">
            <div class="popap_header">
                <a href="#header"><img src="img/закрыть.png" id="cloze_1" onclick="terte()"></a>
                <a href="#"><img src="img/корзина.png" id="korzina" onclick="copyPaste()"></a>
            </div>
            <div class="popap_mini_body">
            <div class="image_popap">
                <div class="img_popap">
            <input type="file" id="myFile" onchange="myFunction()"></div></div>
            <div class="ul_input">
                <ul class="">
                    <li><textarea name="name" class="popop_1" class="name_popap"></textarea></li>
                    <li><input type="text" class="input_rubli"></li>
                    <li><input type="text" class="input_rubli" id="pop_1"></li>
                </ul>
            </div>
        </div> 
            <textarea name="opisanie" class="textarea_1"></textarea>
            </div>
        </div>
    </div>
    <script src="js/code.js"></script>
    <script src="chief-slider.min.js"></script>
</body>
</html>

прошу решить проблему, сам я так и сколько я не пытался, разобратся так и не смог.


Ответы (1 шт):

Автор решения: Eugene X

Я посмотрел твой код, поплакал, скопировал в codepen, опять поплакал. Ну а по факту, ты про 40-44 линию кода?

Появляются они потому что ты используешь += то-есть добавить io.innerHTML += Пропадают они потому что LocalStorage лимит всего 5MB при перегрузке буфера браузер сам чистит LocalStorage. Есть такая вещь как SessionStorage - она не имеет лимита, и чиститься когда пользователь покинул сайт (то-есть закрыл все закладки сайта в браузере)

Попробуй ключевое слово debugger; добавить в код, и с открытой консолью пройди пошагово и посмотри что происходит.

ps: А если всё-же хочешь развиваться в FrontEnd разработке, посмотри YouTube канал http://www.youtube.com/c/FreelancerLifeStyle (Фрилансер по жизни) мужик конечно не очень, но по крайней мере очень много рассказывает что называется на пальцах.

→ Ссылка