Javascript 定义HTMLObjects的变量
当我想在Javascript中向html对象添加变量时,我有两种可能的方法; 我可以使用data-x=”“属性,也可以直接向对象添加变量,对吗? 什么更好 例如: obj=document.getElementById(“x”) 当我定义这样的变量时,它是有效的Javascript吗Javascript 定义HTMLObjects的变量,javascript,variables,object,Javascript,Variables,Object,当我想在Javascript中向html对象添加变量时,我有两种可能的方法; 我可以使用data-x=”“属性,也可以直接向对象添加变量,对吗? 什么更好 例如: obj=document.getElementById(“x”) 当我定义这样的变量时,它是有效的Javascript吗 obj = document.getElementById("obj"); //from the data attribute data = obj.getAttribute("data-x"); //direct
obj = document.getElementById("obj");
//from the data attribute
data = obj.getAttribute("data-x");
//directly
obj.data = "test";
data = obj.data;
这里最正确的答案是什么?
谢谢。最好的方法是不要首先使用数据属性,因为您已经有了对对象的引用—将应用程序数据存储在应用程序中—而不是表示层中。我会这样做:
var myModel={data:“test”,elem:document.getElementById(“obj”)}
然后在后续代码中访问我拥有的对象的实际数据。这样你就有了一个对象的实际支持数据模型,而不是在你的演示文稿上存储额外的信息。我相信你可以随心所欲地存储来自JavaScript的数据(但要小心与潜在的新属性发生冲突)。但是,如果希望能够将数据从HTML传递到JavaScript,则需要使用data-
表单。话虽如此,为了一致性和未来安全性,我总是将其存储为数据-
属性。我发现对于大型项目,避免将变量直接与html对象关联是更好的选择,因为很难跟踪所有内容。。。它会变得一团糟。也就是说,将可视元素与逻辑代码分离是很好的。也就是说,在中小型项目中,使用属性可能是首选方法。将变量直接添加到对象(称为expando属性)通常被认为是更糟糕的做法。@BenjaminGruenbaum很公平,但我们不知道OP是如何使用这些数据的;他们可能有类似的情况。我倾向于相信你的答案更可能是正确的。@T\u 01在你列出的选项中,最正确的是属性
版本。一般来说,最正确的可能是Benjamin Gruenbaum关于对象和属性数组的建议,这些对象和属性存在于JavaScript中,而不是DOM中。但与任何事情一样,都有权衡的余地,所以试着理解所有的选择,并根据你的情况选择最好的。