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

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」オブジェクト自体ではなく、(innerHTMLプロパティを使用して)「div」オブジェクトのhtmlソースを取得し、それを送信します。

于 2012-06-13T19:39:24.777 に答える
0

それは、最初の例ではブール値でthis[object HTMLDivElement]ないためです....

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

動作します

于 2012-06-13T19:31:02.567 に答える