Personal tools
You are here: Home ブログ 井上 コードの膨張
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

コードの膨張

最近、少しずつJavaScriptを好きになっていた気がしましたが、気のせいだったかもしれません。

次のようなコードを書きました。チェックボックスをON/OFFすると、テキストボックスのパスワードモードを切り替えるだけの簡単なコードです。

<div id="base">
 <input type="text" id="input_foo"/>
 <input type="checkbox" onclick="$('input_foo').setAttribute('type', this.checked ? 'password' : 'text');"/>
</div>

このコード、IEでは動きません(IE6では動きません。IE7は不明です)。

次のページを見ると、type属性を後から変更できないようです。

IE5の制限事項と書いてありますが、手元のIE6で上記コードが動きません(エラーが起きます)。

結局、(元はたった1行のコードが)次のような仰々しいコードになってしまいました(最初、cloneNode()を使いましたが、ダメでした)。

function change(v) {
  var e = $('input_foo');
  if (Prototype.Browser.IE) {
    var base = $('base');
    var dup = document.createElement('input');
    dup.setAttribute('type', v ? 'password' : 'text');
    dup.setAttribute('value', e.value);
    dup.setAttribute('id', 'input_foo');
    base.replaceChild(dup, e);
  } else {
    e.setAttribute('type', v ? 'password' : 'text');
  }
}

もっと調べれば、マシな書き方が見つかるかもしれませんが、何を信じてよいのか分かりません。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/lovely-js/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.