我想在 html 页面上存储一些额外的数据,并根据客户的要求使用这些数据来使用 JS 显示不同的东西。我应该如何存储这些数据?在不可见的 div 中,还是别的什么?有一些标准的方法吗?
7 回答
我认为没有标准的方法;我会将它们存储在 JavaScript 源代码中。
我认为如果你使用 JS 来显示它,你应该将它存储在某种 JS 数据结构中(取决于你想要做什么)。但是,如果您只想将一个元素交换为另一个元素,那么不可见 [在此处插入元素类型] 也可以很好地工作。
之一:
- 隐藏的输入字段(如果您想将其提交回服务器);或者
- 页面上的隐藏元素(由 CSS 隐藏)。
每个都有应用程序。
例如,如果您使用 (1) 来识别有关表单提交的某些内容,则您永远不应该在服务器上依赖它(就像来自客户端的任何内容一样)。(2) 对于诸如“丰富”的工具提示、对话框和其他通常在页面上不可见的内容等内容最有用。通常,内容要么是可见的,要么是适当的克隆,可能在过程中被修改。
如果我需要在 html 中添加一些信息,这些信息将由 javascript 使用,那么我使用
<input id="someuniqueid" type="hidden" value="..." />
不可见的 div 通常是要走的路。如果您知道首先需要显示什么,您可以通过只加载最初的内容,然后使用 AJAX 调用加载页面上的剩余元素来改善用户体验。
您需要将任何类型的数据存储为 HTML 结构中的 HTML。我会说要正确构建您打算在页面上显示为正确 HTML 的数据或内容。确保一切都是完整的、语义化的和可访问的。然后确保 CSS 正确呈现数据。完成后添加内联样式“display:none;” 到您希望动态显示的顶部容器。文本阅读器可以读取该内联样式,因此在元素的显示样式发生更改之前,他们不会阅读它。
然后在准备好后使用 JavaScript 更改容器的样式:
var blockit = function () {
var container = document.getElementById("containerid");
container.style.display = "block";
};
对于少量附加数据,您可以使用HTML5“data-*”属性
<div id="mydiv" data-rowindex="45">
$("#mydiv").data("rowindex")
或按属性值选择项目
$('div[data-rowindex="45"]')
将附加数据附加到元素
$( "body" ).data( "bar", { myType: "test", count: 40 } );