プロパティとアトリビュート(javascript)

UEPosted by

jQuery を使っていて、input の value 値を変更する場合、.val(‘値’) と .attr(‘value’, ‘値’) があります。

初期値を設定する場合は問題ないとして、 .attr(‘value’, ‘値’) で設定してから ユーザー入力で編集、ないし .val(‘値’) によって編集されてしまうと、動作しなくなる という報告があって、.attr(‘value’, ‘値’) は危険(?)….val(‘値’) の流儀が良い ということです。

 

.val(‘値’) 上等! と思いきや、.val(‘初期値’) で初期化した値を .attr(‘value’, ‘値’) で書き換えてから、再度 .val(‘初期値’) で 初期値に戻し、その後 「アトリビュート」を参照.attr(‘value’) したところ

.val(‘値’) で 戻した「はず」の初期値になっていなかった

(1つ前の .attr(‘value’, ‘値’) で書き換えた値が取得された)

 

という現象がありました。

.val(‘初期値’) で はなく、.attr(‘value’, ‘初期値’) と変更したら、期待通り初期値に戻ったのです。

 

valueプロパティ(HTMLの特別な値)とvalueアトリビュート(DOMの一般的な属性)とは別物

と気づかされた一幕でした。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA