单击函数正在删除JavaScript中不在索引处的本地存储项的末尾

单击函数正在删除JavaScript中不在索引处的本地存储项的末尾,javascript,Javascript,我的当前代码从列表中添加和删除项目,然后用户可以保存列表,我希望用户能够从保存的列表中删除项目,这是通过函数removietemslocalstorage()完成的,但实际情况是,本地存储项目从末尾而不是索引处被删除,对于如何获取localStorage项的索引位置,我有点困惑,这是一个数组。这对我来说更像是一个学习练习的过程 代码是: let domElements = { app: document.createElement('DIV'), heading: documen

我的当前代码从列表中添加和删除项目,然后用户可以保存列表,我希望用户能够从保存的列表中删除项目,这是通过函数
removietemslocalstorage()
完成的,但实际情况是,本地存储项目从末尾而不是索引处被删除,对于如何获取localStorage项的索引位置,我有点困惑,这是一个数组。这对我来说更像是一个学习练习的过程

代码是:

let domElements = {
    app: document.createElement('DIV'),
    heading: document.createElement('H1'),
    header: document.createElement('DIV'), 
    hero: document.createElement('DIV'),
    newDiv: document.createElement('DIV'),
    errorMessage: document.createElement('P'),
    grid: document.createElement('DIV'), 
    saveList: document.createElement('UL')
}

function domAttributes() {
    domElements.app.classList.add('app');
    document.body.append(domElements.app);
    domElements.heading.textContent = 'Shopping';
    domElements.newDiv.innerHTML = '<p>This is the text of the element</p>';
    domElements.heading.insertAdjacentElement("afterend", domElements.newDiv);
    domElements.errorMessage.innerHTML= 'Error type something in!';
    domElements.heading.insertAdjacentElement("beforeend", domElements.errorMessage);
    domElements.errorMessage.style.color = 'red';
    domElements.errorMessage.style.display = 'none';
    domElements.app.append(domElements.heading);
    domElements.grid.classList.add('grid');
    domElements.saveList.classList.add('saveUl');
    domElements.app.append(domElements.grid);
}

domAttributes();

var data = [
    "Monday", 
    "Tuesday",
    "Wednesday"
];

let gridItems = [
    '<div id="item1" class="item"></div>',
    '<div id="item2" class="item"></div>'
];

var loopElement = 
    {
        image: `<div class="innerElement">Head Test</div>`,
        name: 'Element'
    };

function gridItemLooper(ele) {
    let items = ''; 
    for (let i = 0; i < ele.length; i++) {
        items += ele[i];
    }
    return items;
}

const gridInnerElement = gridItemLooper(gridItems);        
domElements.grid.innerHTML = gridInnerElement;  

function looper() {
let loopImage = '';
for (let i = 0; i < 1; i++) {
    loopImage += loopElement.image;
    }
    return loopImage;
}    


function heroElement() {
    domElements.hero.textContent = 'Hero';
    domElements.hero.classList.add('hero');
    domElements.hero.innerHTML = '<div class="innerElement">Inner Element</div>';
    domElements.hero.setAttribute(
     "style", "font-size: 32px; font-style: bold; background-color:#000000; color: white; width: 100%; height: auto; padding: 20px; font-family: sans-serif"); 
     domElements.app.append(domElements.hero);
}

function itemArray(ele) {
    let items = ''; 
    for (let i = 0; i < ele.length; i++) {
        items += `<li>${ele[i]} <button type='button' class='removeItem'>Remove Item</button> </li>`;
    }
    return items;
}

function layOut() {
    const ui = heroElement();
}

layOut();

function addItemFunction (ele) {
    const addButton = document.getElementById('addButton');
    const input = document.getElementById('input').value;
    
    if (input.length > 0 ) {
        data.push(input);  
        htmlInside(data); 
        domElements.errorMessage.style.display = 'none';
    } else {
        domElements.errorMessage.style.display = 'block';
    }
    
}

function removeItemFunction() {
    data.pop(data);    
    htmlInside(data);
}

function removeItems() {
    const listUl = domElements.app.querySelector('.listItems');
    listUl.addEventListener('click', (event) => {
        if (event.target.tagName == 'BUTTON') {
          let li = event.target.parentNode;
          let ul = li.parentNode;
          ul.removeChild(li);         
          var ele = li.textContent.split(" ")[0];
          var index = data.indexOf(ele);
          data.splice(index, 1);
          console.log(data); 
        }
      });
}

function removeItemsLocalStorage() {
    const listUl = domElements.app.querySelector('.saveUl');
    listUl.addEventListener('click', (event) => {
        if (event.target.tagName == 'BUTTON') {
          let li = event.target.parentNode;
          let ul = li.parentNode;
          ul.removeChild(li);
          let displayItems = JSON.parse(localStorage.getItem("Shopping List"));
          var ele = li.textContent;
          var index = displayItems.indexOf(ele);
          alert(ele);
          displayItems.splice(index, 1);
          localStorage.setItem('Shopping List', JSON.stringify(displayItems));
        }
    });
}

domElements.app.insertAdjacentElement("beforeend", domElements.saveList);
let displayItems = JSON.parse(localStorage.getItem("Shopping List"));

if (localStorage.length > 0) {
    domElements.saveList.innerHTML = displayArray(displayItems);
}

function saveItems(ele) {
    localStorage.setItem('Shopping List', JSON.stringify(ele));
    let displayItems = JSON.parse(localStorage.getItem("Shopping List"));
    domElements.saveList.innerHTML = displayArray(displayItems);
}

function clearItems(ele) {
    localStorage.clear(ele);
    domElements.saveList.innerHTML = localStorage.getItem('Shopping List');
}

function displayArray(ele) {
    let items = ''; 
    for (let i = 0; i < ele.length; i++) {
        items += `<li>${ele[i]} <button type='button' class='removeItem'>Remove Item</button></li> `;
    }
    return items;
}

function clickEvents() {
    addButton.addEventListener('click', function () {
        addItemFunction();
    });

    removeButton.addEventListener('click', function () {
        removeItemFunction();
    });
    
    saveButton.addEventListener('click', function () {
        saveItems(data);
    });
    clearButton.addEventListener('click', function () {
        clearItems(data);
    });
}

function htmlInside(data){
    let getHtml = `
        <ul class="listItems">
            ${itemArray(data)}    
        </ul>
        <input type='input' id='input'></input><button type='button' id='addButton'>Add item</button><button id='removeButton'>Remove item</button><button id='saveButton'>Save list</button><button id='clearButton'>clear list</button>
    `
    document.querySelector('.hero').innerHTML = getHtml;
    removeItems();
    clickEvents();
 }  
 
 htmlInside(data);
 removeItemsLocalStorage(data);
让家庭元素={
app:document.createElement('DIV'),
标题:document.createElement('H1'),
标题:document.createElement('DIV'),
hero:document.createElement('DIV'),
newDiv:document.createElement('DIV'),
errorMessage:document.createElement('P'),
网格:document.createElement('DIV'),
存储列表:document.createElement('UL')
}
函数domtattributes(){
domElements.app.classList.add('app');
document.body.append(domElements.app);
domElements.heading.textContent='Shopping';
domElements.newDiv.innerHTML='这是元素的文本

'; 国内要素。标题。插入相邻要素(“后”,国内要素。新div); doElements.errorMessage.innerHTML='Error type something!'; domElements.heading.insertadjacemente(“beforeed”,domElements.errorMessage); DomeElements.errorMessage.style.color='红色'; doElements.errorMessage.style.display='none'; domElements.app.append(domElements.heading); doelements.grid.classList.add('grid'); doElements.saveList.classList.add('saveUl'); domElements.app.append(domElements.grid); } domtattributes(); 风险值数据=[ “星期一”, “星期二”, “星期三” ]; 让gridItems=[ '', '' ]; var loopElement= { 图像:`头部测试', 名称:“元素” }; 函数gridItemLooper(ele){ 让项目=“”; for(设i=0;i${ele[i]}删除Item`; } 退货项目; } 功能布局(){ 常量ui=heroElement(); } 布局(); 函数addItemFunction(ele){ const addButton=document.getElementById('addButton'); 常量输入=document.getElementById('input')。值; 如果(input.length>0){ 数据推送(输入); htmlInside(数据); doElements.errorMessage.style.display='none'; }否则{ doElements.errorMessage.style.display='block'; } } 函数removietemfunction(){ data.pop(数据); htmlInside(数据); } 函数removitems(){ const listUl=doelements.app.querySelector('.listItems'); listUl.addEventListener('单击',(事件)=>{ 如果(event.target.tagName=='BUTTON'){ 让li=event.target.parentNode; 设ul=li.parentNode; ul.removeChild(李); var ele=li.textContent.split(“”[0]; var指数=数据指数(ele); 数据拼接(索引1); 控制台日志(数据); } }); } 函数removeItemsLocalStorage(){ const listUl=doelements.app.querySelector('.saveUl'); listUl.addEventListener('单击',(事件)=>{ 如果(event.target.tagName=='BUTTON'){ 让li=event.target.parentNode; 设ul=li.parentNode; ul.removeChild(李); 让displayItems=JSON.parse(localStorage.getItem(“购物清单”); var ele=li.textContent; var索引=displayItems.indexOf(ele); 警报(ele); 显示项目.拼接(索引,1); setItem('Shopping List',JSON.stringify(displayItems)); } }); } domElements.app.insertadjacemente(“beforeend”,domElements.saveList); 让displayItems=JSON.parse(localStorage.getItem(“购物清单”); 如果(localStorage.length>0){ doElements.saveList.innerHTML=displayArray(displayItems); } 函数保存项(ele){ setItem('Shopping List',JSON.stringify(ele)); 让displayItems=JSON.parse(localStorage.getItem(“购物清单”); doElements.saveList.innerHTML=displayArray(displayItems); } 功能clearItems(ele){ localStorage.clear(ele); doElements.saveList.innerHTML=localStorage.getItem('Shopping List'); } 函数显示阵列(ele){ 让项目=“”; for(设i=0;i${ele[i]}删除Item`; } 退货项目; } 函数clickEvents(){ addButton.addEventListener('click',函数(){ addItemFunction(); }); removeButton.addEventListener('click',函数(){ removeItemFunction(); }); saveButton.addEventListener('click',函数(){ 保存项目(数据); }); clearButton.addEventListener('click',函数(){ 清除项目(数据); }); } 函数htmlInside(数据){ 让getHtml=`
    ${itemArray(数据)}
添加项目删除项目保存列表清除列表 ` document.querySelector('.hero').innerHTML=getHtml; removitems(); clickEvents(); } htmlInside(数据
function removeItemsLocalStorage() {
    const listUl = domElements.app.querySelector('.saveUl');
    listUl.addEventListener('click', (event) => {
        if (event.target.tagName == 'BUTTON') {
          let li = event.target.parentNode;
          let ul = li.parentNode;
          ul.removeChild(li);
          let displayItems = JSON.parse(localStorage.getItem("Shopping List"));
          var ele = li.textContent.split(" ")[0];
          var index = displayItems.indexOf(ele);
          displayItems.splice(index, 1);
          localStorage.setItem('Shopping List', JSON.stringify(displayItems));
        }
    });
}