我们可以在没有jQuery的情况下,在纯JavaScript中将对象分配给html元素吗

我们可以在没有jQuery的情况下,在纯JavaScript中将对象分配给html元素吗,javascript,html,typescript,Javascript,Html,Typescript,我想将对象存储为HTML元素的属性!假设我有一个div元素,当我单击该div元素时,我想从div元素中获取对象的值,这样我就可以在click函数中使用它 我见过有人在jquery中这样做,但我想要纯javascript,因为我正在编写一个typescript代码,而我不想要jquery ex: var myNewObject={ "first_name": "Sam", "last_name": "carter" } var div=document.getElementByID("myID"

我想将对象存储为HTML元素的属性!假设我有一个div元素,当我单击该div元素时,我想从div元素中获取对象的值,这样我就可以在click函数中使用它

我见过有人在jquery中这样做,但我想要纯javascript,因为我正在编写一个typescript代码,而我不想要jquery

ex: 
var myNewObject={
"first_name": "Sam",
"last_name": "carter"
}
var div=document.getElementByID("myID");
div.setAttribute("myobject",myNewObject);

<div onclick="somefunc()>
</div>
function somefunc()
{
     console.log(document.getAttribute("myobject").first_name);

}
ex:
var myNewObject={
“名字”:“山姆”,
“姓”:“卡特”
}
var div=document.getElementByID(“myID”);
div.setAttribute(“myobject”,myNewObject);

您可以直接将任何Javascript对象存储在
HTMLElement
上:

constdiv=document.createElement('div');
div.myobject={hello:'world'};
属性中只能存储字符串,对象的字符串表示形式为
[object object]
。如果必须使用属性,则可以序列化对象并存储它,然后在再次检索时反序列化它:

constobj={hello:'world'};
常量a=document.querySelector('a');
a、 setAttribute('myobject',JSON.stringify(obj));
const obj2=JSON.parse(a.getAttribute('myobject');
log(obj2.hello)

你好
这里是另一种方法。这是一个很好的时间来了解哪些类似于对象,但键可以是任何类型,而不仅仅是字符串。可以将元素用作键,将对象用作值

const elementMap = new Map();
const myElement = document.querySelector("#myElement");
const myObject = {x: 0, y: 0, z: 0};
elementMap.set(myElement, myObject);
...
//later we can access the object by that element
const myElement = document.querySelector("#myElement");
const myObject = elementMap.get(myElement);
这种方法有两大优点。
1.无需担心名称与HTML元素的属性冲突,也无需担心其他代码修改元素的属性。

2.该对象与您最初拥有的对象相同,如果您关心引用(如果您使用JSON字符串解决方案,则不会保留该引用),这一点非常重要。

属性仅用于简单数据。但是您可以直接将任何内容附加到元素对象:
document.getElementById('id_here')。foobar={“bar”:“baz”}本地存储或您自己的对象来跟踪数据可能更适合您的需要。hello@Phillip!设置属性代码有效!谢谢!我之前没有想到要把它串起来。直接将对象分配给HtmleElement,我无法做到这一点!我想让你知道我在用打字脚本!“我发现HtmleElement上不存在一个issue属性”您必须使用要添加的属性来扩充
HtmleElement
(或特定元素)类型,或者只强制转换到任何:
(元素为any)。myobject=…