我正在编写一个框架,它使用javascript / html作为客户端,并且它作为后端并不重要。
我有时需要在HTML DOM中存储数据。理想情况下,我想针对DOM元素存储数据,但我希望此元素不会对UI产生影响。
目前我在想我会使用< span>没有文本内容,并使用归属进行装饰,以便我的框架可以认为它是一个数据容器并且行为恰当。
有更好的选择吗? (为了避免疑问,我知道还有其他方法可以做 - 我对这些并不感兴趣,纯粹是在没有UI影响的情况下用于包含数据的最佳HTML元素。)
编辑(架构说明): 我已经创建了一个服务器端技术,它基于我之前创建的通用报告引擎。这个服务器端的东西基本上可以作为一个Web服务器 - 这似乎是一个不寻常的选择,但是,鉴于组织的限制,它是最好的选择 - 为了论证,假设这是真的。我需要这个系统做的事情之一就是生成动态表单来捕获树状数据。这很好并且运行良好 - 我的问题是因为当隐藏子表单时(例如,用户已经在数据的给定子部分中做出了所有必需的决定),我销毁了数据捕获元素 - 如果表单嵌入在父表单中,需要访问在已销毁的子表单中捕获的数据,我需要一种将数据嵌入DOM的方法,以便将其收集起来传递回服务器。这个要求要复杂得多,但要详细说明它们需要太长时间。
答案 0 :(得分:2)
嗯(为避免疑问),HTML元素不应该存储数据。如果您真的想要,请使用<input type="hidden">
元素。
出于您的目的,我建议(按此顺序)使用localstorage或cookie或Web数据库。
这里有一些资源:
正如JLRishe指出的那样,如果您因任何原因需要文本节点存储,那么span是一个很好的选择,因为div是(并且因为很多元素与它们display: none
一样长)。 / p>
答案 1 :(得分:0)
你可以创建javascript对象......
var myData ={
property1:"aaaaa",
property2:500,
property3:{morestuff1:"AAA", ... },
property3:["list1", "list2", ... ],
....
}
如果需要,可以轻松访问并轻松操作DOM。 没有UI影响......(没有渲染)
答案 2 :(得分:0)
这里显而易见的选择是使用HTML数据属性。如果您有一个表并希望存储有关未向用户显示的表的信息 - 您可以:
<table id="mytable" data-id="2000" data-rows="20" data-whatever="whatever">
然后您可以轻松地使用jQuery获取它:
$("#mytable").data('rows');
哪个会给你20个。
答案 3 :(得分:0)
如果您实际上没有将数据用于布局,那么将数据存储在DOM中并不是一种好习惯。糟糕!
为了更好地满足您的需求,HTML5提供了一个用于处理客户端存储的JavaScript API。根据您的具体情况,您有2个选项可供选择。 API完全相同,唯一的区别是存储的生命周期。
他们是:
以下链接可帮助您更好地了解这些API,以便您解决特定问题:http://www.w3schools.com/html/html5_webstorage.asp