变量不包含真值。怎么样。为什么?

时间:2012-06-13 19:28:29

标签: javascript variables

当我使用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元素。但我没有那个。为什么呢?

注意: -

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

3 个答案:

答案 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”对象本身,然后发送它。