"Null" HTML DOM 元素?

"Null" HTML DOM Element?

我正在编写一个框架,它使用 javascript/html 作为客户端,它不重要作为后端。

有时我需要在 HTML DOM 中存储数据。理想情况下,我想针对 DOM 元素存储数据,但我希望该元素没有 UI 影响。

目前我在想我会使用一个没有文本内容的 并用属性装饰它,这样我的框架就可以识别它是一个数据容器并表现得适当。

还有更好的选择吗? (为避免疑义,我知道还有其他方法可以做事 - 我对这些不感兴趣,纯粹是最好的 HTML 元素用于包含数据而没有 UI影响)。

编辑(架构说明): 我创建了一种服务器端技术,该技术基于我之前创建的通用报告引擎。这个服务器端的东西本质上是一个网络服务器——这似乎是一个不寻常的选择,但考虑到组织限制,它是最好的选择——为了争论,假设这是真的。我需要这个系统做的一件事是生成动态表单来捕获树状形式的数据。这一直很好并且运作良好 - 我的问题是因为当子表单被隐藏时(例如,用户已经在数据的给定子部分中做出所有必需的决定),我销毁数据捕获元素 - 如果该表单嵌入在父表单中,该父表单需要访问在已销毁的子表单中捕获的数据,我需要一种将数据嵌入 DOM 的方法,以便可以收集数据以将其传回服务器。要求比这个复杂得多,但要详细说明它们将花费太长时间。

嗯(为了避免疑义),HTML 元素不应该存储数据。如果您真的想要,请使用 <input type="hidden"> 元素。

出于您的目的,我建议(按此顺序)使用本地存储或 cookie 或网络数据库。

这里有一些资源:

正如 JLRishe 指出的那样,如果您出于某种原因需要文本节点存储,那么 span 是一个不错的选择,因为 div 是(并且很多元素只要您 display: none他们)。

您可以创建 javascript 个对象...

var myData ={
    property1:"aaaaa",
    property2:500,
    property3:{morestuff1:"AAA", ... },
    property3:["list1", "list2", ... ],
   ....
}

如果需要,可以在 DOM 中轻松访问和操作。 无 UI 影响....(无渲染)

这里显而易见的选择是使用 HTML 数据属性。如果您有 table 并且想要存储未向用户显示的有关 table 的信息 - 您可以:

<table id="mytable" data-id="2000" data-rows="20" data-whatever="whatever">

然后您可以通过 jQuery 轻松获得它:

$("#mytable").data('rows');

哪个会给你 20。

在 DOM 中存储数据不是好的做法,如果您实际上没有将其用于布局目的。哎呀!

为了更好地满足您的需求,HTML5 提供了 JavaScript API 来处理客户端存储。根据您的情况,您有 2 个选项可供选择。 API完全一样,唯一的区别是存储的生命周期。

他们是:

  • localStorage:本地存储持久化;在用户完全关闭浏览器并重新打开后,存储在本地存储中的数据甚至可用于网页。
  • sessionStorage:顾名思义,此数据仅适用于当前会话。

这里有一个 link 可以帮助您更好地理解这些 API,这样您就可以解决您的特定问题:http://www.w3schools.com/html/html5_webstorage.asp