プロパティとアトリビュート(javascript)
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の一般的な属性)とは別物
と気づかされた一幕でした。