我们可以在没有jQuery的情况下,在纯JavaScript中将对象分配给html元素吗
我想将对象存储为HTML元素的属性!假设我有一个div元素,当我单击该div元素时,我想从div元素中获取对象的值,这样我就可以在click函数中使用它 我见过有人在jquery中这样做,但我想要纯javascript,因为我正在编写一个typescript代码,而我不想要jquery我们可以在没有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"
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=…