Kan vi tilordne et objekt til et HTML-element i ren JavaScript uten jQuery
Jeg vil lagre et objekt som et attributt på et HTML-element! La oss anta at jeg har et div-element, og når jeg klikker på div-elementet, vil jeg hente verdiene til objektet fra div-elementet slik at jeg kan bruke det i klik-funksjonen.
Jeg har sett folk gjøre det i jQuery, men jeg vil ha det i ren JavaScript siden jeg skriver en TypeScript-kode og ikke vil ha 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);
}
Forventet output: Sam
Faktisk output: Feil
Svar #1
Du kan lagre hvilken som helst Javascript-objekt på et HTMLElement direkte:
const div = document.createElement('div');
div.myobject = { hello: 'world' };
Bare strenger kan lagres i attributter, og strengrepresentasjonen av et objekt er [object Object]. Hvis du må bruke attributter, kan du serialisere objektet og lagre det, og deretter deserialisere det når du henter det igjen:
const obj = { hello: 'world' };
const a = document.querySelector('#a');
a.setAttribute('myobject', JSON.stringify(obj));
const obj2 = JSON.parse(a.getAttribute('myobject'));
console.log(obj2.hello);<div id="a">Hello</div>Å lagre tilstand i DOM anses generelt som en dårlig praksis uansett.
