【问题标题】:get all html elements (the names or ids) in order of appearance on a form using javascript使用 javascript 按出现在表单上的顺序获取所有 html 元素(名称或 ID)
【发布时间】:2011-10-04 21:12:07
【问题描述】:

在工作中,我有一些带有普通 html 元素和经典 asp 动态复选框的 html 表单(经典的 asp 背面)。

我们想要对此进行报告并创建数据透视表,因此我需要按照它们在表单上出现的顺序提供 html 对象(静态和动态)的所有名称或 ID(名称可能更好)的列表。有些是隐藏的,直到用户与依赖对象交互(我们也想要这些)。

我发现了多篇关于在一个课程中获得所有内容的帖子,但可以找到这个确切的答案,因为顺序非常重要!

jQuery 已经在页面上使用,所以可以使用。

提前致谢!

【问题讨论】:

  • 这听起来像是一个相当全面的任务;你从哪里开始的?进展如何?出了什么问题?
  • 注意:屏幕上出现的顺序并不总是 HTML 中的顺序。听起来很棘手。
  • 我已经创建了表单和动态复选框(来自 ms sql)。在下拉菜单中选择“其他”时会显示一些隐藏文本。我首先构建 html 表单,然后确保它们正确发布和保存。然后我添加了动态复选框并对必填字段进行了 js 验证,现在我需要为报告做准备。一切都很顺利(有点复杂),但这篇报道让我很伤心!

标签: javascript jquery html names


【解决方案1】:

使用任一选项在#myForm 中创建元素 ID/名称列表:

var orderedArrayId = [];
$("#myForm *[id]").each(function(){
    orderedArrayId.push(this.id);
})

var orderedArrayName = [];
$("#myForm *[name]").each(function(){
    orderedArrayName.push(this.name);
})

如果要获取 DOM 元素列表,也可以使用 .push(this),而不是使用 .push(this.id)

运行此代码后,您可以循环遍历所有元素:

$.each(orderedArrayId, function(index, element){
    //element holds the ID of the element
    // (or a reference to the DOM element, if you've used `.push(this)` instead
    //      of `.push(this.id)`)
    //Do something
});

【讨论】:

  • 这很好用。有点儿。我可能应该多解释一点,但认为没有必要。我有 1 个母版页 (main.asp),里面是表单标签名称/id = frmMain。下面我做了一些经典的 asp 意大利面条逻辑,然后包含适当的 html/asp 表单。 <!--#include Virtual="UO/WebSF/frmAggressiveBehavior/frmAggressiveBehavior.asp"--> 我不认为这些包含文件中的 html 对象被您的脚本捕获,因为我只看到那些在 frmMain 而不是包含在其中的对象。有什么建议吗?
  • 那么,您有多个表格?循环遍历每个表单。
猜你喜欢
  • 2012-03-06
  • 1970-01-01
  • 2022-11-29
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多