あほプログラム by Javascript ― 2006年07月03日 11時39分13秒
プログラム (Javascript 版)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="generator" content="HeTeMuLu Creator Ver.1.10a"> <meta http-equiv="content-script-type" content="text/javascript"> <title>あほプログラム by Javascript</title> <script type="text/javascript"><!-- function main_routine() { var text = document.forms[0].message.value; var value = 0; var i; for (i = 0; i < text.length; i++) value += text.charCodeAt(i); var aho = ""; for (i = 0; i < value; i++){ aho += "あほ "; } document.body.innerHTML = "<p><strong>" + aho + "</strong></p>\n" + '<form><input type="button" value="もう一度"' + ' OnClick="location.reload();"></form>'; } //--></script> </head> <body> <p>あほあほ。</p> <p>どう思いますか?</p> <form OnSubmit="main_routine(); return false;"> <input type="text" name="message" size="20"> <input type="button" value="Enter" OnClick="main_routine();"> </form> </body> </html>
解説
入力された文字列の、すべての文字の文字コードを加算した回数だけ、「あほ」を表示するプログラム。以前別ハンで、いくつかの言語で作りまくったのを公開していたやつの Javascript 版。Web 上で動作するもの、という意味ではこれが一番近いかな (クライアントサイドプログラムだし「呆れ返りつつ終了」もしないけど)。
文字コードは Unicode で扱っているため、日本語の文章とか入れると若干処理に時間を食うかもしれない。さらにあんまり長い文章入れるとオーバーフローとか起こすかもしれない (知らんけど)。
ヒント
for
ループを用いて変数 aho
に あほ あほ あほ ...
の文字列を生成しているが、これを直接 document.body.innerHTML
に対して行ってはいけない。 innerHTML
プロパティは文字列の変更が行われると即座に画面を再描画しようとするため、入力した文字列によっては数十万、数百万回の再描画を繰り返すことになり、結果としてとんでもなく処理が重くなる。ていうか、IE なら間違いなく固まる。
コメント
トラックバック
このエントリのトラックバックURL: http://harapeko.asablo.jp/blog/2006/07/03/430583/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。