2014年05月11日

タイマーつくった

なんとなくLTがしたくてたまらなくなったので、練習するときのためにタイマーをつくった。
はじめてJavaScriptをまともにさわった。
JavaScriptがわかる知り合いにいろいろ教えてもらったらなんかできた。
iPhoneのタイマーアプリの方が便利というのは秘密である。そんなこと、言ってはいけない。

参考にしたサイトはこちら。
イヌでもわかるJavaScript講座
JavaScript入門

最初に書いたのがこれ。

HTMLもJavaScriptもあまり書いたことがないので、汚いのは許して欲しい。
で、これだとまずいらしい。
18行目の「selectTime = eval ( document.Form.selector.options[mySelect].value );」ってかいてあるところがまずいらしい。なのでevalについて調べてみた。
eval 関数 (JavaScript)というページが出てきた。試しに読んでみるとこんな記述が。
eval 関数を使用すると、JavaScript ソース コードを動的に実行できます。
codeString 文字列は、JavaScript パーサーによって解析され、実行されます。
eval 関数に渡されるコードは、eval 関数を呼び出した場合と同じように実行されます。

えーとつまり。
eval(なんとか) って書いたら、「なんとか」って部分がJavaScriptのソースコードとして実行されると。
もしこの部分にやばいコードが仕込まれたら……と考えると、使わない方が無難なようですね。今回使う理由ないし。
というわけでさくっと書き直します。

JavaScriptって謎が多すぎますね。
18行目の「selectTime = document.Form.selector.options[mySelect].value - 0;」って記述、謎です。けどこれでいいらしいですね。思った通り動いてるけど不可解すぎる表現です……。これ、数字が文字列として渡ってきてるはずなのになんで引き算できるんだ……。足し算じゃだめなのー? と思ったけれど、「文字列をくっつける」って思われちゃうからダメなんですね。
あと、22行目の「minutes = Math.floor(selectTime / 60);」ってところ、最初なにも考えずに「minutes = selectTime / 60」と書いていたら、小数点以下の数字が出てきて「?!?!」って思いました。調べてみたらちゃんと切り上げ、切り捨ての書き方がありました。
JavaScript 例えば小数点第2位以下を切り捨てる | Yasigani-ni Blog
四捨五入なんてこともできるんですねー。すげー。

で、実際に動かしてみたい方はここで動かせますです。cssとか全然書いてないのでまっしろです。そのへんは後ほど書きます。とりあえず動けばいいんです。見た目は後でなんとかすりゃいいんです。たぶん。

とりあえずまだなおしたいところはありますが、それは追々調べつつなおすことにします。
タグ:JavaScript
posted by Dahlia* at 20:44| Comment(0) | JavaScriptことはじめ
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: