Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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_Arrays_Indexof_Splice - Fatal编程技术网

Javascript 为什么拼接项目在下一个列表条目时返回显示?

Javascript 为什么拼接项目在下一个列表条目时返回显示?,javascript,arrays,indexof,splice,Javascript,Arrays,Indexof,Splice,我看了前面所有的相关问题,没有任何帮助,所以我在这里 用户可以将列表项一次添加一个全局变量,或在每个列表项之间复制/粘贴逗号。 我想这部分很好。不管怎样,它是有效的。删除列表项也是如此 问题是,当删除一个项目后,下一个项目被输入到列表中时,它也会将删除的项目放回列表中 这是我的代码片段和代码笔。请帮我弄清楚什么是错的 发生这种情况是因为您使用的文本来自$('#displayArea')。但是在您的代码中有一个listInputArr变量来存储项目列表,但在您的函数中您不会更改它。因此,不要从字

我看了前面所有的相关问题,没有任何帮助,所以我在这里

用户可以将列表项一次添加一个全局变量,或在每个列表项之间复制/粘贴逗号。
我想这部分很好。不管怎样,它是有效的。删除列表项也是如此

问题是,当删除一个项目后,下一个项目被输入到列表中时,它也会将删除的项目放回列表中

这是我的代码片段和代码笔。请帮我弄清楚什么是错的


发生这种情况是因为您使用的文本来自
$('#displayArea')
。但是在您的代码中有一个
listInputArr
变量来存储项目列表,但在您的函数中您不会更改它。因此,不要从字符串中获取项目,而是从
listInputArr
中获取项目并删除其中的项目:

var searchItem = prompt('item to delete').trim();
var res = listInputArr.indexOf(searchItem);
if(searchItem !== '' && res !== -1){
  listInputArr.splice(res, 1);
  $('#displayArea').html(listInputArr.join(', '));
}else{
  alert('Please enter search name');
}

您正在更新listToSearch(局部变量)和displayArea(html元素),但不更新全局变量listInputArr。确保从deleteListItem()中的listInputArr中删除元素


我修改了你的一些代码,它似乎起了作用。 在inputFunc()中,更改
listInputArr.push(userItem)

listInputArr.push(...userItem.split(','));
这将确保如果用户输入'aa,bb',它不会存储为单个字符串,而是在','上拆分为单独的字符串

接下来,您需要更改deleteListItem(),如下所示:

function deleteListItem(){
  //var listToSearch = $('#displayArea').html().split(', ');
  var searchItem = prompt('item to delete').trim();
  var res = listInputArr.indexOf(searchItem);
  alert(res);
  if(searchItem !== '' && res !== -1){
    listInputArr.splice(res, 1);
  $('#displayArea').html(listInputArr.join(', '));
  }else{
    alert('Please enter search name');
  }
}

我希望这有帮助。如果您遇到我的代码问题,请告诉我。

我也尝试从listInputArr拼接该项目。它似乎不起作用。出于某种原因,我认为用户输入的要删除的变量没有分配给该变量,或者indexOf函数不起作用answer@codeForger看看我的答案。我已经修复了丢失的部分。在我的代码分支中,上面的代码可以很好地工作。勾选此处:,似乎没有您问题中提到的问题。如果您在我的fork中发现问题,请告诉我。@codefforger它正在工作。我看不出你的问题中提到的问题。Ashish Patel只有当列表同时粘贴了多个列表项时,问题才会发生。如果用户一次输入一个名称,那么删除功能就非常有效。“我正试图把我的头绕在它周围。@codeForger如果你想一次删除多个项目,你可以在delete函数中循环用户输入并逐个删除它们。”。
listInputArr.push(...userItem.split(','));
function deleteListItem(){
  //var listToSearch = $('#displayArea').html().split(', ');
  var searchItem = prompt('item to delete').trim();
  var res = listInputArr.indexOf(searchItem);
  alert(res);
  if(searchItem !== '' && res !== -1){
    listInputArr.splice(res, 1);
  $('#displayArea').html(listInputArr.join(', '));
  }else{
    alert('Please enter search name');
  }
}