| @技術/プログラミング

こういうコード書いてます。

function getAttrName(attrObj) {
    var attrName = attrObj.firstChild.data;
//  items = document.getElementsByClassName('item');
    var items = $('li.item');
    $(items).fadeOut('slow');
    for (var i = 0; i < items.length; i++) {
    //  var keywordList = items[i].getElementsByClassName('keyword-list');
        var keywordList = $('.keyword-list', items[i]);
        for (var j = 0; j < keywordList.length; j++) {
            //var keywords = keywordList[j].getElementsByTagName('li');
            var keywords = $('li', keywordList[j]);
            for (var k = 0; k < keywords.length; k++) {
                if (attrName == keywords[k].textContent) {
                    $(items[i]).fadeIn('slow');
                }
            }
        }
    }
    getCurAttr(attrName);
}
function getCurAttr(attrName) {
    var curAttr = $("#keySelector li a");
    for (var l = 0; l < curAttr.length; l++) {
        if ($(curAttr[l]).text() == attrName) {
            $(curAttr[l].parentNode).addClass('current-keyword');
        } else {
            $(curAttr[l].parentNode).removeClass('current-keyword');
        }
    }
}

やりたいことは以下のような感じ。

  1. onclickで attrObjgetAttrName に渡される
  2. クリックされた文字列を attrName に格納
  3. すべての item をjQueryを使って非表示
  4. item の中の ul.keyword-list li 内のテキストに一致したらjQueryで表示

Firefox/Safari/Operaでは問題なく動く。しかしIEが全滅。最初は getElementByClassName とか使ってるからかと思ってたけど、その辺のやつをコメントアウトしてjQueryセレクタを使ってオブジェクトを取得するようにしてもダメ。なんかループの処理とかが怪しいんじゃないかと思ってる。ループ処理もjQueryに書き換えようかな。

ブラウザ間の挙動の違いを吸収してくれるライブラリはまじですごいしありがたいのですが、結局IEちゃんでは動かせない。歯がゆいな。

サーバーサイドで実装する方法もないではないけど、

  1. いじる部分が広範囲になりめんどい(新たなバグが発生するかも)
  2. 大した機能じゃないのに大手術したくない
  3. ずっとPHPばっかり触ってるのはつまらん

などという理由により期限ぎりぎりまでJavaScriptで粘ってみたいです。

追記

"Twitterでcxxさんに教えてもらった":http://twitter.com/cxx/status/13545498622 んだけど、IEにはtextContetはないそうです。恥ずかしい。

そういうわけで

var keywords = $('li', keywordList[j]);

var keywords = $('li a', keywordList[j]);

とし、

if (attrName == keywords[k].textContent)

if (attrName == keywords[k].firstChild.data)

にしてみたところ、ばっちりIEで動くようになった。

cxxさんありがとうございます。今度焼き肉デートしましょう。

| @雑談

就職した

2009年はいろいろありました。まず就職した! ダサいことに上京して三日で会社辞めて帰ってきましたが。転出届を出すために役所に行ったときに会った同級生と10日後に地元のディスカウントストアで鉢合わせたときのかっちょわるさはなかなかのもんでした。まぁ僕っぽいつったら僕っぽいです。その後いろいろあっていま働いてるところにお世話になることになりました。

CakePHPをさわるようになった

いままでの趣味のプログラミングというかCMSいじりから一歩脱却して、いまはCakePHPでサイトを作っています。フレームワーク開発。開発と言ってもCakePHPはBakeやScaffoldingでものの数分でアプリケーションを作れてしまうので大して高度なことをやっているわけではないのですが、すでにあるもの(WordPressなど)をいじる段階から、フレームワークの助けは借りているものの一応自分でサイトを組み立てていくというステップに一歩前進したかなとは思います。

あとJavaScript。いまんところjQueryの面白そうなプラグインを見つけてきてそれをカスタマイズしてるだけな段階なので、せめて人の助けを借りずになんかできるようになりたいです。デザインは全然できないので誰かに頼るとして、サーバーサイドとクライアントサイド両方ある程度の技術を身につけたいかなと思っています。そんでなんか楽しいサイトを作ってみたい。

Twitterの人たちと会った

仕事以外では2009年はネットで知り合った人と良くお会いした年でした。2007年春にTwitterを初めて、2007年末から2008年前半にかけてはTwitterにのめり込んで、実際に他のユーザーに会うようになったのは地方住まいということもあって遅く、2008年の後半からでした。Twitterはもはや暇つぶしの道具ではなく生活の一部になった観があります。というかネット関係の仕事をしたいと思うようになったのはあきらかにTwitterの影響ですね。

映画をよく見るようになった

あと働き出したことで、平日はがっちり仕事に拘束されてしまうので、週末は必ず一本映画を見るようになりました。無職のときより映画への欲求が強くなったというか。これは良いことだと思います。2009年後半は毎月4〜5本ペースで見たはず。

iPhoneなどデジモノガジェットにどっぷりつかってるいまだからこそ、自宅でレンタルDVDで映画見るんじゃなくて、外に出て行って劇場でアナログ的に映画見るのが楽しいですね。知らない人と一緒に泣いたり笑ったりする場を求めているというか。映画館に足を運ぶ人が減ってるらしいけど、配給会社は工夫して劇場にもっと人が足を運ぶ仕組みを作って欲しいですね。なんたって劇場で見る映画は格別です。とりあえず映画料金を1200円くらいに値下げしてくれたら人いっぱい映画館に来ると思うんだけどな。

あまり本を読まなくなった

映画をよく見るようになった反面本を読まなくなりました。東京に住んでた頃は電車移動でしたので、電車の中で本を読むということができていたのですが、地方では車で移動するので移動時間に本を読むということがなかなかできません。実は電車の中での読書というのが非常に大切で、読書はなんかとっかかりがないとはかどらないものだと僕は思っているのですが、電車の中での読者がこのとっかかりとして最適で、電車に乗る度に本を開くので読んでいる本の続きを常に意識するようになり、帰宅してからも本をよく開いてました。しかし電車移動中の読書ができなくなると読書のひっかかりがなくなってしまって、僕のような中途半端な人間はなかなか本を開かなくなってしまうのです。加えていまはiPhoneがあるので、ついつい暇な時間はネットにアクセスしてしまう。無職のときはそれでも読書の時間があったんだけど、さすがに朝から夜遅くまで働いてると本を読む時間はとれなくなってますね。いかんなーとは思いつつ、本との距離が遠のいてます。

2009年に見た映画で良かったもの

2009年に見た映画で良かったものを三つあげてみたいと思います。一本目はなんと言ってもクリント・イーストウッドの俳優引退作『グラン・トリノ』。これは素晴らしかったです。アメリカ人になりたいって思わせる、かっちょいい映画でした。次はクエンティン・タランティーノの『イングロリアス・バスターズ』。これも完成度高かったです。映画マニアも一般の人も楽しめるというすごい映画。次が是枝裕和監督の『空気人形』。人間のエゴについて考えさせられる映画でした。次点で『あの日、欲望の大地で』と『そして、私たちは愛に帰る』かな。映画の感想を別のブログに書いているので良かったらときどき覗いてあげてください。

iPhone

2008年はiPhone一色の年でしたが、2009年もiPhoneの年でした。ブログには書いてなかったですがiPhone 3GS買っちゃってるしアップルにお伏せしまくりです。

昨夜、友達に電話して年明けに遊ぶ日程を決めていたのですが、そのときナチュラルにMac見ながらiCalでスケジュールを確認して予定を入れてました。いまじゃこんなこと普通なんだけど、数年前までは手帳に書き書きしていたことを、コンピューター上で入力して携帯電話で確認する、みたいな。スゲー世の中になってきてると思います。一昔前にこんなことやろうとしたらペンタブレット付きのPDAとかパソコンと接続するためのクレードルとか大仰なアイテムが必要だったのにねー。いまはメールとカレンダーはGoogle<->iPhone<->Macでクラウドしちゃっててマジサイコーな感じです。

2010年も適当にがんばります

とりとめもなくぐだぐだ書いてしまいましたが、2010年はもちっと飛躍出来るようにがんばりたいですね。同級生はみんな所帯持って立派になってきてるので、追いつくとまでは言わないまでももう少し年齢相応の働きをしたいです。