2015-01-04 6 views
2

DOM 노드의 사용자 지정 속성에 자바 스크립트로 개체를 저장하고 싶습니다. setAttribute/getAttribute 시도했지만 특성을 텍스트로 변환합니다. 자바 스크립트 DOM 노드에 텍스트가 아닌 속성을 저장할 수 있습니까?

내가 이미 문자열 값에 발을 잎 때문에 나는

node.setAttribute('info', object); 
val = node.getAttribute('info') ; 

을 테스트 한 어디에서나 작동하지 않습니다

node = document.getElementById('SAMPLE'); 
object = { test: function(){ stuff; } }; 

을했습니다 가정합니다.

내가

node[ 'info' ] = object; 

을 할 경우

val = node[ 'info' ]; 

내 스크립트에서 나중에 내 객체를 날 다시 제공합니다.

이전 IE와 같은 HTML5 이전 브라우저에서 작동합니까? 안전 해요?

+0

속성으로 속성을 첨부 할 수 있지만 일반적으로 호스트 개체는 그대로두고 게시 된 API를 통해서만 재생해야합니다. – RobG

+0

질문 하나만 .. 왜요? – CKGrafico

+0

특히 원시 데이터 만 저장하는 경우에는 현명한 충돌 방지 이름을 사용하는 한 아무 문제가 없습니다. 객체를 저장하는 경우, 특히 함수를 저장하는 객체를 저장하는 경우 이전 IE에서 감지하기 어려운 순환 참조를 만들면 메모리 누수가 발생할 수 있습니다. –

답변

3

속성으로 첨부 할 수는 있지만 좋은 생각은 아닙니다. - 당신은 루프 또는 뭔가를 생성하지 않는 한 Date.now().toString()이 될 수 있습니다 쉬운 방법

  1. 는 고유 한 문자열을 생성합니다 – RobG는

그래서, 여기에 대안을위한 나의 제안입니다. 여기서 가장 잘 작동하는 것을 사용하십시오.

  • 는 전역 객체를 가지고 domdata = {};

  • 지정 domdata[unique_string] = your_data_here;

  • 저장 node.setAttribute("data-dom-id",unique_string);

  • 이제와 데이터를 검색 할 수 있습니다 말 :

    1. unique_string = node.getAttribute("data-dom-id");

    2. domdata[unique_string]

    를 완료를 검색! :)