2017-02-11 1 views
0

아래 코드가 (object, Object)를주는 이유는 누구든지 내게 설명 할 수 있습니까?
(console.log (마약)은 JSON.stringify와 JSON.parse 다음에해야 할 것을 제공합니다. 왜 그렇게하고 있는지 말해 준다면 좋을 것입니다.JSON returns (object, Object)

var nombrememes = document.getElementsByClassName("meme").length; 
var memenumber = nombrememes + 1; 

var newmeme = prompt('Please paste the link of the meme below!'); 
memes.push ('placememe'+memenumber+''); 

var div = document.createElement('div'); 
document.body.appendChild(div); 
div.id = 'placememe'+memenumber+''; 
div.className = 'meme'; 
div.innerHTML = '<img src="'+newmeme+'" width="700" height="700" alt="" />'; 


var dope = document.getElementById('placememe'+memenumber+''); 
console.log(dope); 
localStorage.setItem('dope', JSON.stringify(dope)); 
var pla = JSON.parse(localStorage.getItem('dope')); 
alert(pla); 
+0

당신이'에 대해 이야기하는 경우 정말 (JSON 객체로)를 보는 방법을 모르기 때문에 그건, 그래서 경고를 시도 –

+0

문자열로 반환 alert' (JSON.stringify (PLA)); –

+0

'alert'는 디버깅 도구가 아닙니다! 'console.log (pla)'를하면 기대 한 것을 볼 수있다. –

답변

1

JSON.parse 이후에는 JavaScript 객체를 처리하기 때문입니다.

IE 당신이 다시 '{}'을받지 않습니다 {}.toString()을하고있는 당신은 다시 자바 스크립트 객체의 문자열 표현에 대한 반환 것입니다 [object Object] 얻을. 따라서 JSON.stringify()이 Javascript 객체를 JSON으로 변환해야하는 이유입니다.

경보의 문자열을 얻으려면 문자열 표현으로 localStorage의 값을 그대로 두십시오.

var pla = localStorage.getItem('dope'); 
alert(pla); 
0

이것은 작동하지 않습니다. this question을 참조하십시오. DOM 노드를 JSON으로 직렬화하려고 시도하고 있지만 불가능합니다. 대신 빈 객체로 직렬화합니다. 어느 쪽을하려고하면 alert(...). 개체가 alert 일 때마다 [Object object]이 포함됩니다.

JSON.stringify/JSON.parse 작업은 실제로 문제와 관련이 없습니다. DOM 노드가 아닌 모든 유효한 객체로 올바르게 작동합니다.

DOM 노드의 부분을 저장하려면 개별 스칼라 속성을 저장할 수 있습니다. 예를 들어 innerHtml을 저장할 수 있습니다. 다른 속성을 원하는대로 추가하십시오.

var o = { 
    inner: dope.innerHtml 
}; 
+0

좋아, 지금 왜 그것이 작동하지 않는지 이해합니다. 하지만 DOM 노드를 객체로 변경하여 어떻게 작동하는지 설명 할 수 있습니까? – DrBad

0

제안 :

console.log(pla) 

그렇지 않으면 alert의 경우이 시도 : 코드를 디버깅 개체를 인쇄하려면

,이 시도 :

alert(JSON.stringify(pla, null, 4)); 

장점 :

  • 크로스 플랫폼 지원
  • 인 ECMAScript 5 판에서 표준화
  • 지원

    는 들여 쓰기 JSON 객체 함께 출력을 줄 것이다이 시도 파이어 폭스, 크롬, 사파리, IE8.