Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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_Jquery - Fatal编程技术网

使用javascript向数组添加/删除值

使用javascript向数组添加/删除值,javascript,jquery,Javascript,Jquery,在我的应用程序中,我为用户创建了一个添加和删除行的功能(PHP和JS) 我已在函数之外声明了我的项数组。我遇到的问题是,当一个数组删除一行时,该数字不会添加回数组 这是我的密码: var maxField = 10 var x = 0; var idArray = []; for (var i = 1; i <= maxField; i++) { idArray.push(i); } // sort the array as number, not as a string

在我的应用程序中,我为用户创建了一个添加和删除行的功能(PHP和JS)

我已在函数之外声明了我的项数组。我遇到的问题是,当一个数组删除一行时,该数字不会添加回数组

这是我的密码:

var maxField = 10
var x = 0; 

var idArray = [];

for (var i = 1; i <= maxField; i++) {
   idArray.push(i);
}

// sort the array as number, not as a string 
idArray = idArray.sort(function(a,b) {
  return (+a) - (+b);
});



$('#addItem').click(function() {

    x = idArray.shift();    // get the next available id in the idArray for the record

    if(x <= maxField) { 
        // do something 
    }
});


$('#removeItem').on('click', '.remove_button', function(e) { 

    var removeButtonId = this.id,
        splitRemoveButtonId = removeButtonId.split('_');
        x = splitRemoveButtonId[2]; 
        // get the value of x and put it back in the idArray, sort the array and be ready for the next record

        idArray.push(x); 

        idArray = idArray.sort(function(a,b) {
          return (+a) - (+b);
        });

        alert(x +' - '+ idArray);

    e.preventDefault();

});
该问题似乎与用于填充数组的for循环有关,或者与removeItem函数中的代码未更新数组有关

for (var i = 1; i <= maxField; i++) {
   idArray.push(i);
}

我建议在处理类似项目列表时尽量避免使用ID。下面是一个通用示例,它允许用户添加/删除非常简单的元素。页面操作仅通过相对定位完成。它不构建通过创建和附加单个节点来添加的节,而是克隆html中存在的隐藏节点

$(“#容器”)。在('click','add',函数(){

if($('.item').length不需要一元加号,减号将字符串强制为数字。排序数组的赋值是非常有效的,因为排序在原地工作。这是一个创建ID的复杂系统!为什么需要它们?请修复问题中的引号。
$('#addItem')中有一个卷曲的引号
并且在“$”(“#removietem)中有一个卷曲的引号和缺少的引号.我已经提交了一份编辑@Barmar@Catch44OP应该对其进行编辑,以确保其与实际代码相匹配。虽然此代码片段可能会解决问题,但确实有助于提高您文章的质量。请记住,您将为将来的读者回答此问题,而这些人可能不知道您代码提示的原因打开。请不要用解释性注释挤满代码,这会降低代码和解释的可读性!嗨,James,谢谢你的提示。我在一个页面上有几个表格,每个表格都有一个带有选择下拉菜单的表格。根据选择,我需要在该行中显示4个特定的值/选项。你认为呢这将像您上面描述的那样工作?什么是最好的方法?使用最接近的()遍历td/tr?谢谢。@Mike,抱歉,刚刚看到您关于数据id=“0”的消息。对于我上面提到的表行,这种方法有效吗?谢谢。是的,这种方法适用于下拉列表或其他输入字段的网格。对于表,制作一个隐藏但填充有下拉列表等的tr并克隆它。
for (var i = 1; i <= maxField; i++) {
   idArray.push(i);
}
idArray = idArray.map(Number);