JavaScript在单击时从列表中删除字符串(如果已经存在)
我在单击时从列表中添加和删除项目时遇到问题。移除功能只工作一次 HTML 我还觉得这个功能可以简化?编辑:重写它JavaScript在单击时从列表中删除字符串(如果已经存在),javascript,jquery,Javascript,Jquery,我在单击时从列表中添加和删除项目时遇到问题。移除功能只工作一次 HTML 我还觉得这个功能可以简化?编辑:重写它 var $showList = $('#show-list'); $('#my-list').find('li').click(function () { var $this = $(this); var itemName = $this.data('itemname'); var showListText = $showList.text(); v
var $showList = $('#show-list');
$('#my-list').find('li').click(function () {
var $this = $(this);
var itemName = $this.data('itemname');
var showListText = $showList.text();
var showListItems = showListText.split(',');
var itemIndex = showListItems.indexOf(itemName);
if (itemIndex > -1) {
// remove item
showListItems.splice(itemIndex, 1);
} else {
// append item
showListItems.push(itemName);
}
showListText = showListItems.filter(function (a) { return !!a; }).join(',');
$showList.text(showListText);
});
编辑3:
仅从最佳实践的角度来看,我在jQuery对象前面加了
$
前缀,而没有其他前缀。我觉得它使代码更具可读性,并允许您为变量指定一个“类型”,以便您始终知道它是什么。这就是您需要的吗?我会先跳过转换到数组。另外,代码中的$itemname是什么
<html>
<head>
<script>
function removeItemFromList(listName, itemName) {
var selectobject=document.getElementById(listName);
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == itemName) {
selectobject.remove(i);
}
}
}
function addItemToList(listName, itemName, itemValue) {
var selectobject=document.getElementById(listName);
var found = false;
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == itemValue) {
found = true;
// already in list, don't re-add
break;
}
}
if (!found) {
var option = document.createElement("option");
option.text = itemName;
option.value = itemValue;
selectobject.add(option);
}
}
</script>
</head>
<body>
<select id="show-list">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<br/>
<input type="button" value="remove volvo" onclick="removeItemFromList('show-list', 'volvo');" />
<input type="button" value="remove saab" onclick="removeItemFromList('show-list', 'saab');" />
<input type="button" value="add delorean" onclick="addItemToList('show-list', 'DeLorean', 'delorean');" />
</body>
</html>
函数removeItemFromList(listName,itemName){
var selectobject=document.getElementById(listName);
对于(var i=0;iYou必须为每个项目列表设置Id。$(“项目Id”).remove;请给出一个完整的示例,使问题重复出现-您的示例不存在,例如,$itemname
应该是什么或它来自何处,完全不清楚。请阅读。根据请求,我添加了其他信息。感谢您的查找!如果您删除最后一个项目不起作用,因为您搜索了itemtoremove+“,”
和最后一个元素(我想)没有逗号。为什么要删除字符串而不是删除(切片)数组
?谢谢。慢慢来。几乎所有这一切都是对所选项目的可视化显示。太好了!谢谢你的帮助!非常感谢!@没问题,请查看。你一定会学到一些技巧,一路读下去,如果你每天都遵循这些技巧,你最终会写出b更好的代码。太好了!再次感谢!我已经更新了原始帖子。项目名称来自此C1
var $showList = $('#show-list');
$('#my-list').find('li').click(function () {
var $this = $(this);
var itemName = $this.data('itemname');
var showListText = $showList.text();
var showListItems = showListText.split(',');
var itemIndex = showListItems.indexOf(itemName);
if (itemIndex > -1) {
// remove item
showListItems.splice(itemIndex, 1);
} else {
// append item
showListItems.push(itemName);
}
showListText = showListItems.filter(function (a) { return !!a; }).join(',');
$showList.text(showListText);
});
<html>
<head>
<script>
function removeItemFromList(listName, itemName) {
var selectobject=document.getElementById(listName);
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == itemName) {
selectobject.remove(i);
}
}
}
function addItemToList(listName, itemName, itemValue) {
var selectobject=document.getElementById(listName);
var found = false;
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == itemValue) {
found = true;
// already in list, don't re-add
break;
}
}
if (!found) {
var option = document.createElement("option");
option.text = itemName;
option.value = itemValue;
selectobject.add(option);
}
}
</script>
</head>
<body>
<select id="show-list">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<br/>
<input type="button" value="remove volvo" onclick="removeItemFromList('show-list', 'volvo');" />
<input type="button" value="remove saab" onclick="removeItemFromList('show-list', 'saab');" />
<input type="button" value="add delorean" onclick="addItemToList('show-list', 'DeLorean', 'delorean');" />
</body>
</html>