2016-08-29 13 views
-1

javascriptを使用して属性にオブジェクトを追加しようとしていますが、オブジェクトオブジェクトとして渡しています。javascriptを使用して属性としてオブジェクトを追加する方法は?

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

コード

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

それは、私はドンが間違っている

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

として作成されましたか?

+0

文字列を使用して要素を作成しないでください。 – epascarello

+0

選択肢はオブジェクトです。何を期待しましたか?投稿 'this.label' too – mplungjan

+0

@epascarello他に何が使えますか? –

答えて

2

JavaScriptを使用してDOMを操作する場合、中間的な簡易HTML表現を実行する必要はありません。あなたは絶対にdatasetdata-*="…")の一部であることをchoiceが必要な場合は

は、他のいくつかのコンポーネントがそれに依存しているため...

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; 

そして、いくつかの他のDOM要素にこのlinkその後、appendChild:DOMは、任意のプロパティを持つオブジェクトを直接作成します。 ...まあ、datasetはオブジェクトではなく文字列を保持できるだけなので、値がJSON文字列であることに少なくとも同意する必要があります:

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

'content.dataset.desc = choice' STILLは' ' – mplungjan

+0

を返します。作業。 –

+0

ああ、はい、私は 'dataset'が文字列のマップであることを忘れていました...更新しました。 @Kunal – deceze

関連する問題