簡體   English   中英

JSON返回(對象,對象)

[英]JSON returning (object, Object)

誰能向我解釋下面的代碼為何給出(對象,對象)?
(console.log(dope)給出了應該的內容,但是在JSON.stringify和JSON.parse之后,它只是說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);

這是因為在JSON.parse之后,您現在正在處理JavaScript對象。

IE瀏覽器在執行{}.toString()時不會返回'{}'而是會返回[object Object] ,這是Javascript返回的對象字符串表示形式。 這就是為什么需要JSON.stringify()才能將Javascript對象轉換為JSON的原因。

如果要獲取警報的字符串,只需將來自localStorage的值保留為字符串表示形式。

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

這行不通。 看到這個問題 您正在嘗試將DOM節點序列化為JSON,但這是不可能的。 而是將其序列化為空對象。 然后您要alert(...)那個alert(...) alert對象時,它每次都會包含[Object object]

JSON.stringify / JSON.parse操作與您的問題並沒有真正的關系。 任何有效的對象都可以正常工作-而不是DOM節點。

要保存DOM節點的部分 ,可以保存單個標量屬性。 例如,可以保存innerHtml。 根據需要添加其他屬性。

var o = {
    inner: dope.innerHtml
};

建議:

如果要打印對象以調試代碼,請嘗試以下操作

console.log(pla)

否則,如果出現alert嘗試以下操作

試試這個,它將為您提供帶有縮進JSON對象的輸出

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

好處:

  • 跨平台支持
  • 在ECMAScript 5th Edition中標准化
  • 在Firefox,Chrome,Safari和IE8中支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM