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');
}
}