底なしくずかご

[top]   [story]   [short story]   [present]   [diary]   [offline]   [links]   [bbs]

2007年5月13日 - 2007年5月19日] | [トップページ] | [2007年5月27日 - 2007年6月 2日

[底]できた?

 昨日の JavaScript 話の続き。
 一晩寝かすとうまくいくことの多い私ですが、これも一晩寝かせてみました。で、昨日は getAttribute/setAttribute というメソッドを使って onMouseOver を検知していましたが、それを止めてみたところ、うまくできました。

 結果出てきたスクリプトは以下の通り。


window.onload = function() {
//onmouseout を書かなくてもいいようにするスクリプト。
 spanTag = document.getElementsByTagName('span');
 for (var i = 0, ls = spanTag.length; i < ls; i++) {
  if (spanTag[i].onmouseover) {
   spanTag[i].onmouseout = nd;
//   alert(spanTag[i].innerHTML);
  }
 }
 ankerTag = document.getElementsByTagName('a');
 for (var j = 0, la = ankerTag.length; j < la; j++) {
  if (ankerTag[j].onmouseover) {
   ankerTag[j].onmouseout = nd;
//   alert(ankerTag[j].innerHTML);
  }
 }
 strongTag = document.getElementsByTagName('strong');
 for (var k = 0, lt = strongTag.length; k < lt; k++) {
  if (strongTag[k].onmouseover) {
   strongTag[k].onmouseout = nd;
//   alert(strongTag[k].innerHTML);
  }
 }
}

 // と入っているのは JavaScript のコメントで、テスト用にアラートを表示するスクリプトです。
 Internet Explorer と Firefox でうまくいってるので、たぶん大丈夫なのではないかと。
 大きな変更点は onMouseOver の検知を if (*Tag.onmouseover) だけでやっていることと、onMouseOut の指定に .onmouseout = を使っているところ。シンプルにした方がうまくいくんだから何とも言えません。

 if 文の判定に変数名だけを入れておくと、中身が入っていれば true と見なされる、というのは他の言語でもあるんですが、どうも慣れなくて変な書き方をしてしまいます。

 あー、腑に落ちた。よかった。

07.05.24. 00:33 投稿 | カテゴリー: programming | コメント (0) | トラックバック (0)

[底]JavaSrcipt チャレンジ - jQuery 編

 前に overLib を導入したのに続き、今回はそれを少し便利にするために jQuery というライブラリを入れてみました。
 ......正確には、入れようとして失敗しました。

 overLib を使うときには、必ず onMouseOveronMouseOut の2つを指定する必要があります。しかも、onMouseOut の方は常に書くことが決まっていて、いちいち書くのがめんどくさい。
 かつ、onMouseOver の方も「return ntip('ツールチップの中身')」とずらずら書かないといけないので地味に面倒です。

 めんどくさがりはプログラマーの美徳といいますが、このいちいちめんどくさいのを何とかしようと思い、最近ちょっと注目していた jQuery というものを入れてみました。

 が、title という属性の性質からどうしてもツールチップが2重に出てしまい、出ないように title 要素を消すと今度はひとたびマウスを放すと、もう一度乗せてもツールチップが両方出ない(正確には overLib の方は「undefined (未定義)」と出る)という結果に......。
 これはどうにもしようがないので、一旦諦めました。

 代わりに jQuery を使わないでも onMouseOut の方を書かなくてもいいようにしてみました。もちろん jQuery 使ってもよかったんですが、使わなくてもできそうなことと、使うことにするとなるとテンプレートを全部書き換える必要があってそこまでする時間がないので、とりあえず普通の JavaScript のみで書いてみました。

 そしたらこちらも失敗。なんでだー!

 ちなみに以下の通り。

//onmouseout を書かなくてもいいようにするスクリプト。

window.onload = function() {
 var isIE = (document.documentElement.getAttribute("style")==document.documentElement.style); //IE 判定
 spanTag = document.getElementsByTagName('span');
 for (var i = 0, ls = spanTag.length; i < ls; i++) {
  if (isIE && spanTag[i].getAttribute("onmouseover") != "") {
   spanTag[i].setAttribute("onmouseout", new Function ("return nd()"));
  } else if (spanTag[i].getAttribute('onmouseover') != "") {
   spanTag[i].setAttribute('onmouseout', 'return nd()');
  }
 }
 ankerTag = document.getElementsByTagName('a');
 for (var j = 0, la = ankerTag.length; j < la; j++) {
  if (isIE && ankerTag[i].getAttribute("onmouseover") != "") {
   ankerTag[i].setAttribute("onmouseout", new Function ("return nd()"));
  } else if (ankerTag[i].getAttribute('onmouseover') != "") {
   ankerTag[i].setAttribute('onmouseout', 'return nd()');
  }
 }
}

 理解不能なまま投げるのはものすごく納得いきませんが、1時を回ったので強制終了。一応 span タグについてはうまくいってるみたいですが、これもローカルでは失敗してます(リンクタグは実は失敗しているので、エントリーの中に省略したかった onMouseOut を書き込みました)。

 どちらにせよ、そのうちもうちょっといろいろやりたいなぁと思いつつ、おそらく jQuery は個人的に作ってる HTML/JavaScript ベースのゲームで活躍してくれることと思います。

 一応個人的に JavaScript ブームは続いているので、ブックマークレットと一緒にいろいろ使ってみたいなーと考えている今日この頃。

07.05.23. 00:06 投稿 | カテゴリー: programming | コメント (0) | トラックバック (0)

[底]第二の衝撃

 まずはこちらをご覧ください

 つーと某民放のクイズ番組みたいですが、バンコクのメイドカフェ二号です。しかも今度は日本で既に展開しているメイドカフェ、ぴなふぉあのバンコク店。半分漫画屋さんだったメイドカフェ「AKIBA」とは違い、ホンマもんです。

 しかも場所が Times Square って、私の元母校?のすぐご近所。交通は何番のバスが通ってるかも完璧に把握してる地域ですよ。

 行っちゃうだろうなぁ……。

07.05.22. 22:50 投稿 | カテゴリー: thai | コメント (0) | トラックバック (0)

[底]で

 こんなことをやってるわけですが。

 私が生まれて初めて買ったファミコンソフト(の SFC リメイク)ですよ。懐かしさのあまり思わず観戦中。マリオとかでもそうですが、ありえない
 ここに至るまでに何百時間やったんだこの人。

07.05.20. 00:18 投稿 | カテゴリー: vision | コメント (0) | トラックバック (0)