パーマリンク | 2008年02月13日 03:56
IDEA*IDEAさんが作ってくれた「新しくプログラミング言語を覚えたいときに行うべき10の練習問題」3問目をjavascriptの勉強にやってみた。
// とりあえずフォームの取得
function getFormObj(name)
{
var obj = document.MyForm.elements[name];
return obj;
}
// 入力値を配列として保存するクラス
function GoSet(){
// 入力値
var values = new Array();
// 値をゲット
this.getter = function(){
return values;
}
// セット用
this.setter = function(num){
/**
* 数字以外エラーとして
* リセットする処理が必要だけど略(爆
*/
values.push(num);
}
// リセット用
this.resetter = function(){
values = [];
}
}
// 配列をソートするクラス
function GoSort(values){
var value = values;
var result;
// 受け取った配列をソートしてresultに格納
this.startSort = function(){
result = value.sort(this.Func);
}
// ソート比較関数
this.Func = function(a, b) {
return a - b;
}
// ソート結果を返す
this.getResult = function(){
return result;
}
this.getMax = function(){
if(result == null){
this.startSort();
}
return result[(result.length) - 1];
}
this.getMin = function(){
if(result == null){
this.startSort();
}
return result[0];
}
}
function Controller(){
var setBT = getFormObj('set');
var sortBT = getFormObj('sort');
var resetBT = getFormObj('reset');
this.num = getFormObj('num');
this.set = new GoSet();
var self = this;
// 追加ボタンクリック時の処理
setBT.onclick = function(){
self.set.setter(self.num.value);
alert(self.set.getter());
self.num.value = '';
}
// ソートボタンクリック時の処理
sortBT.onclick = function(){
var lastvalue = new GoSort(self.set.getter());
lastvalue.startSort();
alert('ソート結果' + lastvalue.getResult());
alert('最大値は' + lastvalue.getMax());
alert('最小値は' + lastvalue.getMin());
}
// 追加ボタンクリック時の処理
resetBT.onclick = function(){
self.set.resetter();
alert('入力値をリセットしました');
}
}
onload = Controller;
ソート比較関数がよくわからない・・・ここ後で読む。
Copyright 2006-2008 KANTENNA.COM Reserved.