Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 定义HTMLObjects的变量_Javascript_Variables_Object - Fatal编程技术网

Javascript 定义HTMLObjects的变量

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

当我想在Javascript中向html对象添加变量时,我有两种可能的方法; 我可以使用data-x=”“属性,也可以直接向对象添加变量,对吗? 什么更好

例如:

obj=document.getElementById(“x”)

当我定义这样的变量时,它是有效的Javascript吗

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中。但与任何事情一样,都有权衡的余地,所以试着理解所有的选择,并根据你的情况选择最好的。