Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 1/1: 1

prototype.jsのオブジェクト汚染 - Mar 24, 2006

/latest 以外のディレクトリに置いているページで使っているコンテンツリスト生成用JavaScriptがprototype.jsのObject汚染におもくそひっかかっててメニューぶっ壊れ状態になってたことに今頃気付いた。連想配列とfor-inループの組み合わせで大量死発生。ということでリンク先で提案されている以下のコードを組み込んで対処した。

    Object.prototype.forEach = function(func){
        for(var key in this){
            if(!(key in this.constructor.prototype)){
                func(this[key],key,this)
            }else if(this[key] != this.constructor.prototype[key]){
                func(this[key],key,this)
            }
        }
    };
    obj.forEach(function(value,key,self){
        alert([value,key]);
    });

ンモー

無駄にprototype.js - Mar 16, 2006

全ページでprototype.jsを読み込むようにしてみた。とりあえず使える環境にしとかないと遊ぶのも勉強するのもなんもできんからね。

ナローバンドな人はごめんなさいってことで。

prototype.jsでラジオボタンの選択された値を取得する - Mar 16, 2006

prototype.js 1.4.0を使っていることを前提として。

ラジオボタンというのは、こういう奴のことだ。

  • <label><input type="radio" name="dummy" value="1" />項目1</label>
  • <label><input type="radio" name="dummy" value="2" />項目2</label>
  • <label><input type="radio" name="dummy" value="3" />項目3</label>

チェックボックス風のものがいくつか並んでて、一つだけを選べるというもの。ここで1~3のどの項目がチェックされているのかをJavaScriptで知るためには、通常、以下のようにする必要がある。


var nodes = Form.getInputs($('form'), 'radio', 'dummy');
var selectedItem = $A(nodes).find(function(aNode) { return aNode.checked; });
alert(selectedItem.value);

ところでXULでは、同様のものを以下のように書くことができる。

<radiogroup id="dummy">
    <radio value="1" label="項目1" />
    <radio value="2" label="項目2" />
    <radio value="3" label="項目3" />
</radiogroup>

そして、XULではradiogroup要素のノードから直接「選択された項目の値」を取得することができる。


alert($('dummy').value);

XUL生活(?)が長かった僕は、これにすっかり染まってしまって、prototype.jsにラジオボタン用の機能がないことを知って非常にガッカリしたと同時に、どうやってラジオボタンの選択された値を一発で取得すればよいのか分からず大いに困惑した(「Enumerableクラスのfindメソッドまたはdetectメソッドを使う」という前述の方法などで、やろうと思えばできるということには後から気がついたけど、慌てていた僕はそこまで思い至らなかった)。

そういうわけでごろうさんに泣きついてみたところ、以下のような方法を教えてもらえた。


alert(Form.serialize($(form)).toQueryParams()['dummy']);

フォーム全体の値を一旦クエリの形式に変換して、その上でラジオボタンの部分の値を得るという方法だ。なるほど、こんな方法もあるのか……ということでさっそくこれを使わせてもらうことにした。

でも、この方法はちょっと遠回りなのが残念といえば残念。実行時間も少々余計にかかりそうな気がする。ラジオボタンは排他的選択なんだから、XULの場合のような一発で値を得る方法がprototype.jsにもあっても良さそうなものだと思うんだけどなあ。トホホホホ。

Page 1/1: 1

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき