8

入力ボックスを介して編集した後、値属性はhtml入力タグに対してどのように機能しますか?

例:

<input type="text" name="test" id="test" value="Hello world" />

これにより、「Helloworld」というテキストの入力ボックスが表示されます。レンダリングされたテキストボックスに(生のコードではなく)新しい文字列を入力して編集し、次のようにjsを使用して値を取得しようとすると

alert(document.getElementById('test').value)

正しく、新しい値を取得します。しかし、Chrome開発ツール(またはFirebugなどの好みのもの)を使用して要素を検査すると、最初と同じ「Helloworld」文字列が表示されます。

2つのうちどちらが正しいですか?js値またはクロムインスペクター?

これがフィドルの例で、これがスクリーンショットですここに画像の説明を入力してください

私はこの問題の解決策を見つけようとしてこれに思いつきました。古典的なショップの状況では、ユーザーがXアイテムの数量を入力できるX入力タグ付きのテーブルがあります。各入力の前の値から1つ以上の値が変更されたかどうかを確認する必要があります。古い値と新しい値を比較すると、値が変更されたことが返される場合は、順序を更新する必要があります。それ以外の場合は、保存/更新する必要はありません。

私はattrを使用できると思いました。入力の「古い」値を格納する「value」ですが、おそらく最良の選択ではありませんでした。

誰かがこの行動を説明できますか?これは「更新」の問題にすぎませんか、それとも他に何か問題がありますか?

4

3 に答える 3

9

どちらも正しいです、彼らはただ異なるものを示しています。

DOMvalue プロパティは、現在の値を提供します。

HTMLvalue 属性は、デフォルト値(DOMdefaultValue プロパティと同じ)を提供します。

Chrome DOMインスペクターは、HTMLビューに属性値を表示します。プロパティ値を確認するには、プロパティビューを確認する必要があります。

Chromeプロパティビューのスクリーンショット

于 2013-02-15T09:35:50.023 に答える
5

この記事で情報を見つけることができます。

htmlに表示される値は、フォームがロードされるデフォルト値です。DOMも更新する場合は、ele.setAttribute( "value"、 "new value")を使用する必要があります。

要素が変更されたかどうかを知りたい場合は、onchangeイベントを入力要素にアタッチし、変更ハンドラーでフラグをマークして、フォームが変更されたかどうかを確認するのが最善です。

于 2013-02-15T09:42:20.657 に答える
1

いわゆる独自の属性を入力に割り当てることができます。たとえば、後で現在の値と比較できるように「oldval」

于 2013-02-15T09:39:58.023 に答える