コマンド履歴管理とか
<html> <head> <script type="text/javascript"> var logger; var history; History = function() { this.hst = new Array(); this.current = 0; this.count = 10; } History.prototype = { Add : function(cmd) { if ((this.hst.length > 0) && (this.hst[this.hst.length-1] == cmd)) { this.current = this.hst.length; return; } if (this.hst.length == this.count) { this.hst.shift(); } this.hst.push(cmd); this.current = this.hst.length; }, MoveDown : function() { if ((this.current+1) >= this.hst.length) return this.hst[this.current]; return this.hst[++this.current]; }, MoveUp : function() { if (this.current <= 0) return this.hst[this.current]; return this.hst[--this.current]; } } function init() { logger=document.getElementById('log'); history = new History(); } function enter(obj) { history.Add(obj.value); obj.value=""; printAll(); } function otherCmd(obj, keyCode) { switch (keyCode) { case 16: obj.value = history.MoveUp(); printAll(); return false; break; case 17: obj.value = history.MoveDown(); printAll(); return false; break; } return true; } function printAll() { logger.innerHTML = ""; for (var i=0; i<history.hst.length; i++) { if (i == history.current) { logger.innerHTML += "<b>" + history.hst[i] + "</b><br />\n"; } else { logger.innerHTML += history.hst[i] + "<br />\n"; } } } </script> </head> <body onLoad="init()"> <div id="log"> </div> <input type="text" value="aaaa" size="30" onKeyDown="if (event.keyCode==13) { enter(this) } else { return otherCmd(this, event.keyCode) }" /> </body> </html>
このくらいは作ってほしいよなぁ。ある程度のやつなら10分で出来るけど、10分でやれとは言ってないんだからさ。
なんつーか、難しいことしてるわけじゃないんだから、もうちょい落ち着けと。enterFrameがわかってないのか、アルゴリズムがわかってないのか。この程度出来なきゃプログラムなんて書けないだろ、マジで。データ構造なんて名乗れるほどの代物ですらないぞ。
いや、フレームワーク使ってうにゃうにゃする程度は、こんなの書けなくても書けるけどね。それが書ける程度のレベルのやつは、プログラマーとしてきついだろ。Strutsの使い方なんてどうでもいいから、基本を勉強しろよ。
諸事情でShiftとCtrlが上と下の代わり。Operaだと入力履歴が出てきちゃうからな。
元はFlash用で、Flashが重いんでJavaScriptで書いてたものの転載っす。