コマンド履歴管理とか

<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で書いてたものの転載っす。