为什么不是'我的表格删除了多个条目
Why isn't my form deleting multiple entries?
所以我有一个Array
,它充满了一堆重复,比如['hey','hey','yeh']
,还有一个html表单,如果提交的文本与之匹配,它会从我的数组中删除任何条目。然而,我的JS/jQuery似乎没有按我喜欢的方式运行。每次按下按钮时,似乎只有前几个条目会被删除,而不是所有匹配项(这正是我想要的)。我的"each"函数难道不应该遍历数组中的所有项,并删除所有与提交的内容匹配的条目吗?
HTML:
<form id="remove_user" action="#" method="post">
<label for="user_num">Remove user:</label>
<input type="text" id="user_num" name="user_num" placeholder="number">
<input type="submit" value="(-) remove">
</form><!-- #remove_user -->
<ul id="user_list"></ul><!-- #user_list -->
JS更新了一个更改,但仍然不起作用:
$('#remove_user').submit(function(){
id = $('#user_num').val();
$.each(myArr, function(i, value){
if (value == id){
myArr.splice(i, 1);
};
});
$('#user_list').html('');
for (var i=0; i < myArr.length; i += 1) {
$('#user_list').append('<li>' +myArr[i]+ '</li>');
};
return false;
});
嘿,我觉得应该是这样的。
$.each(myArr, function(i, value){
if (value == id){
// delete myArr[myArr.indexOf(value)];
myArr.splice(i, 1); //i is current index
};
编辑
$('#remove_user').submit(function() {
id = $('#user_num').val();
$.each(myArr, function(i, value) {
if (value == id) {
myArr.splice(i, 1, '');
};
});
FIDDLE
jQuery的.each函数使用一个从0开始的整数对数组进行迭代,以对数组进行索引。当您在发生这种情况时从数组中取出一些东西时,jQuery的索引var不会被告知,您最终会跳过一个项。
如果从数组的另一端进行迭代,这不是问题;
var i = myArr.length;
while (i--) {
if (myArr[i] === value) {
myArr.splice(i, 1);
}
}
更换此部件:
$.each(myArr, function(i, value){
if (value == id){
// delete myArr[myArr.indexOf(value)];
myArr.splice(myArr.indexOf(value), 1);
};
使用$.grep
:
myArr = $.grep(myArr, function(value) {
return value != id;
});
使用.splice
和$.inArray
还有一种更漂亮的方法:
var myArr = ['le', 'le', 'la']
var removeItem = 'la';
myArr.splice($.inArray(removeItem, myArr), 1);
// Will print only 'le', 'le'
alert(myArr);
这里有一个jsFiddle供您尝试:http://jsfiddle.net/leniel/4zENw/2/
相关文章:
- 为什么不是'我的表格删除了多个条目
- 谷歌电子表格-删除范围保护时出错
- 谷歌脚本在5分钟后删除电子表格行
- 如何从表格单元格中删除html的某些部分
- 从 Google 表格中删除行
- jQuery - 删除表格行(如果任何单元格包含介于 X 和 Y 之间的值)
- 如何从选定的表格行中删除 qq 上传器
- 意外的删除行为谷歌电子表格应用程序
- 单击添加和删除表格数据的背景色(td)
- 从表格中删除文本区域
- Tinymce编辑器删除所有样式,但保留项目符号和表格,同时粘贴文本
- 是否有可能替换一个表格单元格而不删除它与javascript或jQuery
- 单击按钮删除表格行
- 如何从调查表格中删除项目符号/数字
- Oracle APEX |如何使用JavaScript从表格中删除行
- 如何删除表格中每个td标签的第一个字符,然后用Google Chart API和Javascript显示它
- 如何在JavaScript中删除和重新排序表格中的单元格
- 如果用户将鼠标悬停在表格中,如何删除按钮
- 删除表格行
- 如何删除谷歌文档电子表格单元格中的空格