在JavaScript的HTML标记中存储任意信息?

在JavaScript的HTML标记中存储任意信息?,javascript,html,tags,Javascript,Html,Tags,一个非常笼统的问题 我正在使用HTML/JavaScript动态生成一个表单,该表单被拆分为多个级别的选项卡 我想使用CSS和背景图像突出显示一些带有星号*符号的字段(这些字段的值不同于全局模板) JS字段遍历每个字段,比较其值,并在必要时为其设置CSS类。到目前为止,一切顺利 此外,我不仅希望每个更改的字段都标记为星形,还希望它所在的选项卡标记为星形 因为我喜欢它的简单性,所以我希望将选项卡的元素ID作为属性存储在每个字段的HTML标记中的某个位置(类似于“parentTab”)。JS函数然后

一个非常笼统的问题

我正在使用HTML/JavaScript动态生成一个表单,该表单被拆分为多个级别的选项卡

我想使用CSS和背景图像突出显示一些带有星号*符号的字段(这些字段的值不同于全局模板)

JS字段遍历每个字段,比较其值,并在必要时为其设置CSS类。到目前为止,一切顺利

此外,我不仅希望每个更改的字段都标记为星形,还希望它所在的选项卡标记为星形

因为我喜欢它的简单性,所以我希望将选项卡的元素ID作为属性存储在每个字段的HTML标记中的某个位置(类似于“parentTab”)。JS函数然后突出显示字段及其“parentTab”元素(也可能是该字段的“parentTab”)

我的第一种方法是误用“title”属性或其他名称来存储parentTab。当然,那是肮脏的。然而,如果我只是在DIV或INPUT标记中随意添加属性,它将不再有效,而且我觉得访问这些属性不太安全——谁知道不同的浏览器如何处理它,将来还会如何处理

所以我的问题是:是否有一种有效的、符合标准的方法——某种属性——将任意数据存储在HTML标记中,以供JavaScript进一步处理


当然,我可以创建一个“parentTabs”JS数组并完成它。但是将其存储在输入本身中会更加优雅。

随着html5的引入,您可以使用,并且它们仍然会验证

<input type="text" name="username" data-parentTab="tab1" value="non-default">

您可以通过编写isChildOf函数来找出字段所属的选项卡式元素,如下所示:


使用DOM来解决这个问题总是比以某种自定义格式复制数据更“优雅”的。

在jQuery中,您拥有用于此问题的数据API。

如果不使用jQuery,可以添加自己的标记并在其中存储任何内容。
每个人都会告诉你这不好等等,但是所有伟大的网络公司都在这么做。所以你最终会进入一家伟大的公司;-)

对于存储这样的数据,
rel
属性通常是一个非常有效的选择。

我喜欢这样做的方式:具有任意类型的脚本标记。他的例子是关于模板的,但是你真的可以将其用于任何事情。

这需要jQuery,不过。。。但是,如果没有jQuery,这也应该相当容易。“使用DOM来解决这个问题总是比以某种自定义格式复制数据更“优雅”。-要点。我现在可能会选择“rel”属性,因为它做起来很快;从长远来看,DOM方法是正确的。这对于拥有HTML5浏览器的5-10%的人来说是非常好的@OP:你可以马上开始使用它,即使规范还没有完成。只需将您的doctype声明更改为
(这就是全部内容;HTML5使doctype更容易记住)。@cletus:这对于较旧的浏览器并不重要,因为它除了保存信息之外,实际上什么都不做。这在IE6中工作得非常好。它只是不会验证为XHTML或HTML4…@cletus:不是这样,非HTML5浏览器普遍忽略他们不理解的属性,所以你现在就可以使用这项技术,因为它是经过未来验证的。这里有一些很好的阅读:@T.J.Crowder,它是
;-)是的,我暂时同意。不过,这是对属性的公然滥用,我一直在寻找解决方法:)请看,更多关于传递给JS的数据。