2

ここでJsFiddleを見てください:

http://jsfiddle.net/ru2Fg/2/

基本的に、それは2つのsで始まりますtextarea。1つは空、もう1つは内部にあるもの、そしてinput type=text。私は、inputあなたに何かを入れるとそれを変更し、あなたvalueに何かを入れるとtextareaテキストを子としてノードに追加するという印象を受けました。

$(...).val(...)内容を変更するために実行します。そして、それらの内容変わります。

ただし、DOMはまったく同じように見えます。私は3つの要素をconsole.log();で印刷しています。それらは変更されていないようです。私はそれらをchromeのinspect要素で見ています:それらは変更されていないようです。

jQueryのval()メソッドの変更はDOMを変更しないようですが、その質問は、Firebugが表示するHTMLを更新しないのはおかしいと結論付けています。この場合、inspect要素がページに存在する現在のhtmlを表示することは間違いありませんleft。たとえば、スクロールしているときに属性が激しく変化するのを見てきました。コンソールを使用してチェックしていますが、同じことがわかります。何も変更されていません。

ただし、 「blank、h​​ello world、2000」ではなく「10、omg、moo」が表示されているので、目変わったことを教えてくれます。どうしたの?

編集:私は間違ったjsFiddleを投稿しました。これは今正しいものでなければなりません

4

3 に答える 3

3

value 属性value プロパティには違いがあります。入力ボックスに入力すると、属性ではなくプロパティが変更されます。属性は、ドキュメントがロードされたときと同じままです。特に、これは、入力ボックスをデフォルト値にリセットできることを意味します。elem.value = elem.getAttribute('value');

同様に、属性が設定され<select>ているオプションの1つを含むドロップダウンがある場合、別のオプションを選択しても、プロパティが現在selectedの状態であっても、その属性は引き続き存在します。selectedfalse

同じことがチェックボックスとchecked属性にも当てはまります。同じことが属性にも当てはまり、disabled他にもいくつかあります。

于 2012-04-05T17:38:08.620 に答える
0

とにかくテキスト領域に10が表示されなかった他の方法で、実際にはDOMを変更しています。問題はファイアバグ自体にあります(古いものをリストしてください)、それが新しいものでまだ利用可能かどうかはわかりません。

確認するには、FirefoxのWebコンソールまたはChromeのコンソールを使用できます。

于 2012-04-05T17:11:44.393 に答える
0

DOMは、jQueryが発生する前に完全に読み込まれるため、技術的には、DOMに挿入されたデータはデバッガーに表示されません。デバッグツールはレンダリングされたもののみを参照するため、jQueryを介して到着する「事後」データを操作することはできません。あなたはそれを「帯域外」またはある意味でDOMを混乱させると考えることができます。同じことがAJAXでも起こります。.load()などのAJAXメソッドを使用してデータまたはページコンテンツを追加すると、DOMには表示されません。

jQueryの入力ボックスにはval()メソッドがあります。これはvalue属性であり、textareaでは通常html()メソッドであり、textareaに含まれています。

于 2012-04-05T17:12:07.967 に答える