Javascript JSON返回(对象,对象)

Javascript JSON返回(对象,对象),javascript,json,Javascript,Json,有人能解释一下为什么下面的代码会给出(object,object)? (console.log(dope)给出了它应该给出的内容,但在JSON.stringify和JSON.parse之后,它只说object,object)。如果你能告诉我为什么会这样,那就太好了 var nombrememes = document.getElementsByClassName("meme").length; var memenumber = nombrememes + 1; var newmeme = pr

有人能解释一下为什么下面的代码会给出(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);
var nombremes=document.getElementsByClassName(“meme”).length;
var memenumber=nombremes+1;
var newmeme=prompt('请粘贴下面meme的链接!');
memes.push('placememe'+memenumber+'');
var div=document.createElement('div');
文件.正文.附件(div);
div.id='placememe'+memenumber+'';
div.className='meme';
div.innerHTML='';
var dope=document.getElementById('placememe'+memenumber+'');
控制台日志(dope);
setItem('dope',JSON.stringify(dope));
var pla=JSON.parse(localStorage.getItem('dope');
警报(解放军);

这是因为在
JSON.parse
之后,您现在正在处理一个JavaScript对象

当您执行
{}.toString()
时,您将无法返回
'{}'
您将返回
[object object]
,这是Javascript为对象的字符串表示返回的内容。这就是为什么将Javascript对象转换为JSON需要
JSON.stringify()

如果要获取警报的字符串,只需将
localStorage
中的值保留为字符串表示形式即可

var pla = localStorage.getItem('dope');
alert(pla);
这行不通。看见您试图将DOM节点序列化为JSON,但这是不可能的。相反,它序列化为空对象。然后您将尝试
警告(…)
。当您
提醒
一个对象时,它每次都将包含
[object object]

JSON.stringify/JSON.parse操作实际上与您的问题无关。它可以很好地处理任何有效的对象,而不是DOM节点

要保存部分DOM节点,可以保存单个标量属性。例如,可以保存innerHtml。根据需要添加其他属性

var o = {
    inner: dope.innerHtml
};

建议:

console.log(pla)
alert(JSON.stringify(pla, null, 4));
如果要打印用于调试代码的对象,请尝试以下操作::

console.log(pla)
alert(JSON.stringify(pla, null, 4));
否则,请在出现
警报的情况下尝试此操作:

尝试此操作,它将为您提供缩进JSON对象的输出

console.log(pla)
alert(JSON.stringify(pla, null, 4));
好处:

console.log(pla)
alert(JSON.stringify(pla, null, 4));
  • 跨平台支撑
  • ECMAScript第5版标准化
  • Firefox、Chrome、Safari和IE8中的支持

如果你说的是
警报
,那是因为它不知道如何查看它(作为JSON对象),所以它会将它作为stringTry警报(JSON.stringify(pla))返回<代码>警报
不是调试工具!如果你做了
console.log(pla)
你会看到你想要的。好的,谢谢,现在我明白为什么它不能工作了。但是你能解释一下我如何将DOM节点更改为一个对象,以便它可以工作吗。