我正在创建一个存储各种元素及其CSS属性的对象。为DOM元素创建唯一标识符
的代码我现在有:
// My object
var cssStorage = {};
function store(element, cssProperty, value) {
// Initialize the (sub-)objects if they don't exist
cssStorage[element.id] = cssStorage[element] || {};
cssStorage[element.id][cssProperty] = cssStorage[element][cssProperty] || {};
// Set the cssProperty to equal the value
cssStorage[element.id][cssProperty] = value;
};
例子:
// My element
var box = document.getElementById("box");
// Let's call the function twice to save to properties
store(box, "display", "block");
store(box, "height", "74px");
现在我的目标是填充像这样:
cssStorage = {
box: { // <- box is the id of the HTML element <div id = "box"></div>
// The property-value pairs
display: "block",
height: "74px"
}
};
所以,现在,如果我输入控制台代码:
return cssStorage.box.display; // Returns "block"
当你的代码我张贴的第一块看见了,我用element.id
作为元素的unique identifier
,以能够如上所示使用它。
我的问题是我的脚本依赖于element.id
。我的DOM的某些元素没有id
,因此这些元素的功能是无用的。
在本质上,我要实现的是调用函数store
当我的元素没有一个ID
如下:
// Some ways to get an element
var box = document.getElementsByClassName("boxes")[0];
var box = document.getElementsByTagName("div")[0];
var box = document.getElementsByName("jack")[0];
// It'll show an error, as the function uses 'element.id' and my element doesn't have one
store(box, "display", "block");
有一个唯一的标识符为DOM中的每个节点?
cssStorage = {
[THE NAME]: {}
};
如果没有,我怎么可以创建我的元素的唯一标识符,这样我可以使用的功能,如上图所示,而无需一个:
的东西,我可以为名称中使用我的元素可能没有的id,类或其他属性?
关闭我的头顶,你可以生成一个GUID,并将其指定为该元素的数据属性,例如, 'data-guid'(尽管如果页面改变,这不会持续)是否需要持久性? – DBS
你是角?自定义指令怎么样? –
@DBS不,完全没有。如果两个元素没有相同的元素,它可以每次设置一个不同的元素。 –