讲师中心 微信公众号
AI工具推荐 视频效率加速

JavaScript:动态调整删除元素后输入框的索引值

星墨吖_2013

星墨吖_2013

发布时间:2025-10-04 12:13:31

|

449人浏览过

|

来源于php中文网

原创

javascript:动态调整删除元素后输入框的索引值

本文介绍如何在动态创建的输入框元素被删除后,使用 JavaScript 重新排序剩余元素的索引值。核心思路是在删除元素后,遍历剩余元素,并更新其 id 和 name 属性,使其索引值连续且正确。以下将详细介绍实现方法,并提供代码示例。

实现步骤

  1. 删除元素: 首先,需要监听删除按钮的点击事件,并在事件处理函数中删除相应的元素。
  2. 重新排序: 删除元素后,遍历剩余的元素,并更新它们的 id 和 name 属性,使其索引值连续。

代码示例

以下是一个完整的代码示例,展示了如何实现动态调整索引值的功能。

let countField = 1;

$("#addUSers").click(function () {
    var user_row = ('<div class="row rm-row">');

    user_row += '<div class="col-lg-3 col-md-12 col-sm-12">';
    user_row += '<h1></h1>';
    user_row += '</div>';

    user_row += '<div id="workin_user' + countField + '" class="col-lg-9 d-flex gap-1">';

    user_row += '<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5 mt-lg-4 mt-md-5">';
    user_row += '<fieldset>';
    user_row += '<label for="worker_' + countField + '" class="label-text">Name Surname<span class="text-danger"> *</span></label>';
    user_row += '<input class="form-control label-text" id="worker[' + countField + '].NameSurname" name="worker[' + countField + '].NameSurname" type="text" />';
    user_row += '</fieldset>';
    user_row += '</div>';

    user_row += '<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5 mt-lg-4 mt-md-5">';
    user_row += '<fieldset>';
    user_row += '<label for="JobDescription_' + countField + '"class="label-text">Job Description<span class="text-danger"> *</span></label>';
    user_row += '<input runat="server" class=" form-control label-text" id="worker[' + countField + '].JobDescription" name="worker[' + countField + '].JobDescription" type="text" />';
    user_row += '</fieldset>';
    user_row += '</div>';

    user_row += '<div class="col-lg-1 col-md-1 col-sm-2 col-xs-2 mt-lg-4 mt-md-5">';
    user_row += '<fieldset>';
    user_row += '<label for="deleteWorkRow" class="label-text">DELETE </label>';
    user_row += '<button type="button" class="deleteWorkRow btn btn-danger"><span class="fa fa-trash"></span></button>';
    user_row += '</fieldset>';
    user_row += '</div>';

    user_row += '</div>';

    user_row += '</div>';

    $('#inputFieldsContainer').append(user_row);
    countField++;
    /*user_row += ''*/


});

$(document).on('click', '.deleteWorkRow', function () {
    $(this).closest('.rm-row').remove();
    //countField--;  //这里不需要减少countField,因为删除后会重新排序

    // Rebuild the rows with updated id and name attributes
    $('.rm-row').each(function (index) {
        var row = $(this);
        row.find('[id^="worker["]').attr('id', function (i, id) {
            return id.replace(/\[(\d+)\]/, '[' + (index + 1) + ']');
        });
        row.find('[name^="worker["]').attr('name', function (i, name) {
            return name.replace(/\[(\d+)\]/, '[' + (index + 1) + ']');
        });
    });
});

代码解释:

Gradle 9.8.0
Gradle 9.8.0

Gradle 9.8.0 官方二进制分发包,适用于 Windows、macOS 与 Linux 的 Java、Kotlin 和 Android 项目构建。

下载
  • $("#addUSers").click(function () { ... });: 这段代码监听 addUSers 按钮的点击事件,并在事件处理函数中动态创建包含输入框的 HTML 结构。
  • $(document).on('click', '.deleteWorkRow', function () { ... });: 这段代码使用事件委托,监听动态创建的 .deleteWorkRow 按钮的点击事件。
  • $(this).closest('.rm-row').remove();: 删除当前按钮所在的 .rm-row 元素。
  • $('.rm-row').each(function (index) { ... });: 遍历所有剩余的 .rm-row 元素。
  • row.find('[id^="worker["]').attr('id', function (i, id) { ... });: 查找当前行中所有 id 属性以 "worker[" 开头的元素,并更新它们的 id 属性。
  • row.find('[name^="worker["]').attr('name', function (i, name) { ... });: 查找当前行中所有 name 属性以 "worker[" 开头的元素,并更新它们的 name 属性。
  • id.replace(/\[(\d+)\]/, '[' + (index + 1) + ']'): 使用正则表达式替换 id 或 name 属性中的索引值。(index + 1) 确保索引从1开始,而不是从0开始。

注意事项:

立即学习“Java免费学习笔记(深入)”;

  • 确保你的 HTML 结构与代码示例中的结构一致,特别是 rm-row 类。
  • 使用事件委托 $(document).on('click', '.deleteWorkRow', function () { ... }); 来监听动态创建的元素的点击事件。
  • 使用合适的选择器来选择需要更新 id 和 name 属性的元素。
  • 在删除元素后,不需要手动减少 countField 变量,因为重新排序逻辑会根据当前剩余元素的数量自动调整索引值。

总结

通过以上步骤,你就可以在动态创建的输入框元素被删除后,使用 JavaScript 重新排序剩余元素的索引值,确保数据的正确性和一致性。 理解代码逻辑,并根据你的实际项目需求进行适当的修改,可以帮助你更好地解决类似的问题。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4396

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

2921

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

8062

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

812

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

520

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

673

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

386

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

719

2023.12.06

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn