문제 풀기 스크립트

2008. 8. 21. 17:35 장난감

<html>
<head>
<script type="text/javascript">

// 문제 모듈
function Tester()
{
    this.cnt = 0;
    this.thisObj = null;
    
    this.setTester = function(obj) {
        this.test = obj;
    }

    this.display = function(callBack) {
        this.thisObj = eval("this.test.q" + this.cnt);
        if(this.thisObj != undefined)
            callBack(this.cnt, this.thisObj);
    }

    this.answer = function(num) {
        if(this.thisObj != undefined)
        {
            if(this.thisObj[0] == num)
                this.cnt++; // 정답
            else
                alert(this.test.msgFalse);    
        }
    }

    this.isNext = function() {
        return (eval("this.test.q" + this.cnt) == undefined ? false : true);
    }
}

// 문제
var test1 = {
    msgFalse : "정답이 아닙니다",
    q0            : [1,
                    "정답을 선택하세요",
                    "TRUE",
                    "FALSE"
                ],
    q1            : [2,
                    "구구단을 푸세요\n누구세요는?",
                    "1x2",
                    "3",
                    "9*9"
                ]
}

// 사용
var a = new Tester();

function SubFunc(num, obj)
{
    var ele = document.getElementById("div1");
    var str = "Q" + (num+1) + ". " + obj[1] + "<BR>";
    for(var i = 2; i < obj.length; i++)
    {
        str += "&nbsp;&nbsp;&nbsp;<input type='radio' name='awr' value='" + (i-1) +"' onClick='UseFunc(this.value);'>" + obj[i] + "<BR>";
    }

    ele.innerHTML = str;
}

function UseFunc(num)
{
    var obj = document.getElementById("div2");
    a.answer(num);
    if(a.isNext()) {
        obj.innerHTML = "<b>Next &gt;&gt;&gt; </b>";
        a.display(SubFunc);
    }else {
        obj.innerHTML = "<b><a href=\"javascript:alert('응모');\">응모하기 (GO)</a></b>";
    }
}

function init() {
    a.setTester(test1);
    a.display(SubFunc);
    
    /*
    while(a.isNext()) {
        a.display();
        a.answer(1);
    }
    */
}

window.onload = init;
</script>
</head>
<body>
<div id="div1"></div>
&nbsp;<br>
<div id="div2" style="position:absolute;top=120px;left=150px;"><b>Next &gt;&gt;&gt;</b></div>
</body>
</html>

-----------------------------------------------------------

위의 '문제' 부분에
q0 ~ q? 를 계속 추가해 주면 다른 스크립트 수정없이 재 사용 가능하다.