2016-08-29 5 views
-1

Ich versuche, Objekt mit JavaScript zu einem Attribut hinzuzufügen, aber es als Objekt übergeben.Wie füge ich ein Objekt als Attribut mit Javascript hinzu?

var choice = {'name':'one',id:1} 

COde

return '<a href="/users?userId='+ 
    choice.id+'" class="tool-tip" title="'+ 
    choice.name+'"><span data-desc="'+ 
    choice+'">'+this.label(choice)+'</span></a>'; 

es schafft als

<a href="/users?userId=1" class="tool-tip" title="userName"> 
<span data-desc="Object Object"></span></a> 

, wo ich bin dong falsch?

+0

Verwenden Sie zum Erstellen von Elementen keine Zeichenfolge. – epascarello

+0

Wahl ist ein Objekt, was hast du erwartet? Post 'this.label' too – mplungjan

+0

@epascarello was kann ich noch benutzen? –

Antwort

2

Wenn das DOM über Javascript manipuliert wird, ist es absolut nicht nötig, die vereinfachte HTML-Darstellung zu durchlaufen. Erstellen Sie DOM-Objekte direkt mit beliebigen Eigenschaften:

var link = document.createElement('a'); 
link.href = '/users?userId=' + choice.id; 
link.classList.add('tool-tip'); 
link.title = choice.name; 

var content = document.createElement('span'); 
content.desc = choice; 
content.textContent = this.label(choice); 

link.appendChild(content); 

return link; 

Und dann appendChild diese link zu einem anderen Element DOM ...

Wenn Sie unbedingt choice benötigen Teil dataset (data-*="…") zu sein, weil einige andere Komponente davon abhängt ... na ja, kann dataset nur Saiten halten, keine Objekte, so dass Sie zumindest würden zustimmen, dass der Wert ein JSON-String ist:

link.dataset.desc = JSON.stringify(choice); 
+0

'content.dataset.desc = Auswahl' STILL gibt '' – mplungjan

+0

das wird nicht gehen Arbeit. –

+0

Ah, ja, ich habe vergessen, dass "Dataset" ist eine Karte von Strings ... Aktualisiert. @Kunal – deceze

Verwandte Themen