当我使用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元素。但我没有那个。为什么呢?
注意: -
我不想要更好的方法来做到这一点,我想知道我的代码中的问题。
答案 0 :(得分:4)
将对象传递给document.write
会通过调用.toString()
将对象转换为字符串。
在<div>
DOM元素上调用时,toString()
会返回"[object HTMLDivElement]"
。
这只是对象的字符串表示;从根本上不可能从该字符串中检索原始对象。
答案 1 :(得分:0)
这是因为this
是[object HTMLDivElement]
而不是第一个例子中的布尔值....
<button onclick="this.hidden=true;">click me</button>
将起作用
答案 2 :(得分: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”对象本身,然后发送它。