2

document.write()当我使用我没有得到真实值来写入它的值时,我有一个变量。看到这个——

 <div onclick="a=this;document.write(a)">this is div</div>

通过单击 div 我得到了这个[object HTMLDivElement]。但这不是真正的价值,看看如何-

 <button onclick="[object HTMLDivElement].style.visibility='hidden'">click me</button>

当我使用此代码时。我预计它将隐藏所有 div 元素。但我没有。为什么?

笔记:-

我不想要更好的方法来做到这一点,我想知道我的代码中的问题。

4

3 回答 3

4

将对象传递给document.write将通过调用将对象转换为字符串.toString()

<div>DOM 元素上调用时,toString()返回"[object HTMLDivElement]".

这只是对象的字符串表示;从该字符串中检索原始对象基本上是不可能的。

于 2012-06-13T19:30:42.623 回答
0

那是因为在您的第一个示例this[object HTMLDivElement]不是布尔值....

<button onclick="this.hidden=true;">click me</button>

将工作

于 2012-06-13T19:31:02.567 回答
0

document.write 要求您向其发送原始 html(基本上是一个字符串),但您错误地尝试向其发送“div”对象。

我没有对此进行测试,但我认为它应该可以工作

<div onclick="a=this.innerHTML;document.write(a)">this is div</div>

或者在语义上更正确:

<div onclick="a=this;document.write(a.innerHTML)">this is div</div>

换句话说,获取“div”对象的 html 源(使用它的 innerHTML 属性),而不是渲染的“div”对象本身,然后发送它。

于 2012-06-13T19:39:24.777 回答