2016-08-29 2 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'도 게시하십시오 – mplungjan

+0

@epascarello 그밖에 내가 무엇을 사용할 수 있습니까? –

답변

2

Javascript를 통해 DOM을 조작 할 때 중간 단순화 된 HTML 표현을 거칠 필요가 전혀 없습니다. 당신이 절대적으로 dataset (data-*="…")의 일부가 될 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' 그래도'' – mplungjan

+0

이 될 것입니다. 작업. –

+0

아, 그래, 나는'dataset'이 문자열의지도라는 것을 잊었다 .... @Kunal – deceze

관련 문제