Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮从数组中删除对象_Javascript_Html_Arrays_Splice - Fatal编程技术网

Javascript 单击按钮从数组中删除对象

Javascript 单击按钮从数组中删除对象,javascript,html,arrays,splice,Javascript,Html,Arrays,Splice,我正在尝试创建自己的小推特 这一切都很好,但我找不到一个方法来删除一个按钮点击特定的推特。我尝试过splice(),但它总是删除数组的第一个对象 这是我的密码: var tweets=[] 函数postnewweet(){ var today=新日期(); var date=today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear(); var time=today.getHours()+':'+today.getMinute

我正在尝试创建自己的小推特

这一切都很好,但我找不到一个方法来删除一个按钮点击特定的推特。我尝试过splice(),但它总是删除数组的第一个对象

这是我的密码:

var tweets=[]
函数postnewweet(){
var today=新日期();
var date=today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear();
var time=today.getHours()+':'+today.getMinutes();
var id=tweets.length+1;
var li=document.createElement('li');
var inputValue=document.getElementById('newTweet').value;
var finalValue=id+“”+inputValue+“”+date+“”+time;
var t=document.createTextNode(finalValue);
li.儿童(t);
推送({
id:id,
内容:输入值,
日期:日期+时间
});
document.getElementById('list').appendChild(li);
document.getElementById('newTweet')。value=“”;
console.log(tweets);
var buttonDelete=document.createElement(“按钮”);
buttonDelete.innerHTML='';
buttonDelete.onclick=deleteItem;
功能删除项(e){
var ul=document.getElementById('list');
ul.removeChild(李);
var list=document.getElementById('list');
list.addEventListener('click',函数(e){
var index=e.target.getAttribute('value');
tweets.拼接(索引,1);
console.log(tweets)
});
}
li.追加子项(按钮删除);
}

邮递

有两个问题:

  • 如果您只是将数组的长度作为id,那么如果删除一个条目,您将获得重复的条目。也许去看一个时间戳——我只是用了你已经有的时间戳,但增加了秒数
  • 您可以检索value属性,但对于splice,您需要元素的索引。我只是将timestamp作为属性添加到按钮中,并将其用于删除
  • 可能不是我最好的代码,但我希望它能给你正确的提示

    var tweets=[]
    函数postnewweet(){
    var today=新日期();
    var date=today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear();
    var time=today.getHours()+':'+today.getMinutes()+':'+today.getSeconds();
    var id=tweets.length+1;
    var li=document.createElement('li');
    var inputValue=document.getElementById('newTweet').value;
    var finalValue=id+“”+inputValue+“”+date+“”+time;
    var t=document.createTextNode(finalValue);
    li.儿童(t);
    推送({
    id:id,
    内容:输入值,
    日期:日期+时间
    });
    document.getElementById('list').appendChild(li);
    document.getElementById('newTweet')。value=“”;
    console.log(tweets);
    var buttonDelete=document.createElement(“按钮”);
    buttonDelete.innerHTML='del';
    buttonDelete.onclick=deleteItem;
    功能删除项(e){
    var ul=document.getElementById('list');
    ul.removeChild(李);
    var list=document.getElementById('list');
    list.addEventListener('click',函数(e){
    var delDate=e.target.getAttribute('del-date');
    让index=tweets.map((item)=>item.date).indexOf(delDate);
    控制台日志(索引);
    tweets.拼接(索引,1);
    console.log(tweets)
    });
    }
    li.追加子项(按钮删除);
    }
    
    邮递
    
    
    有两个问题:

  • 如果您只是将数组的长度作为id,那么如果删除一个条目,您将获得重复的条目。也许去看一个时间戳——我只是用了你已经有的时间戳,但增加了秒数
  • 您可以检索value属性,但对于splice,您需要元素的索引。我只是将timestamp作为属性添加到按钮中,并将其用于删除
  • 可能不是我最好的代码,但我希望它能给你正确的提示

    var tweets=[]
    函数postnewweet(){
    var today=新日期();
    var date=today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear();
    var time=today.getHours()+':'+today.getMinutes()+':'+today.getSeconds();
    var id=tweets.length+1;
    var li=document.createElement('li');
    var inputValue=document.getElementById('newTweet').value;
    var finalValue=id+“”+inputValue+“”+date+“”+time;
    var t=document.createTextNode(finalValue);
    li.儿童(t);
    推送({
    id:id,
    内容:输入值,
    日期:日期+时间
    });
    document.getElementById('list').appendChild(li);
    document.getElementById('newTweet')。value=“”;
    console.log(tweets);
    var buttonDelete=document.createElement(“按钮”);
    buttonDelete.innerHTML='del';
    buttonDelete.onclick=deleteItem;
    功能删除项(e){
    var ul=document.getElementById('list');
    ul.removeChild(李);
    var list=document.getElementById('list');
    list.addEventListener('click',函数(e){
    var delDate=e.target.getAttribute('del-date');
    让index=tweets.map((item)=>item.date).indexOf(delDate);
    控制台日志(索引);
    tweets.拼接(索引,1);
    console.log(tweets)
    });
    }
    li.追加子项(按钮删除);
    }
    
    邮递
    
    
    当您可以在删除功能中访问
    li
    时,您也可以访问所有其他数据。您可以使用它们查找要从
    tweets
    数组中删除的元素。 例如,在当前代码中,可以使用
    id

        tweets.splice(id - 1, 1)
    
    或者,您可以对存储在
    tweets
    中的任何数据使用
    过滤器
    。我认为这部分没有任何用处:

    var list = document.getElementById('list');
        list.addEventListener('click', function(e) {
          var index = e.target.getAttribute('value');
          tweets.splice(index, 1);
          console.log(tweets)
        });
    

    您只需删除
    ul.removeChild

    下的tweet,因为您可以在删除功能中访问
    li
    ,您也可以访问所有其他数据。您可以使用它们查找要从
    tweets
    数组中删除的元素。 例如,在当前代码中,可以使用
    id

        tweets.splice(id - 1, 1)
    
    或者您可以将
    过滤器
    与任何