메뉴 건너뛰기

관리자2020.08.15 20:16
매우 열심하시는 군요.

1. 다음 문장에서 if문은 매우 잘못된 문장입니다.
3개의 값을 비교하기 위해서는 이런 식의 문은 잘못된 표현입니다.
if(spans[0].innerHTML == spans[1].innerHTML == spans[2].innerHTML)

}
보세요.
이 if 문의 조건이 실행되는 과정은 다음과 같습니다.
먼저 spans[0].innerHTML == spans[1].innerHTML 를 검사합니다. 그래서 참이라고 합시다. 그러면 if문은 다음과 같이 됩니다.
if(true == spans[2].innerHTML)

이상하죠, 그런데 true는 1로 번역되고, 때마침 spans[2].innerHTML이 1이면
이 if문이 참이되죠.
혹은
spans[0].innerHTML == spans[1].innerHTML이 서로 달라 거짓이라고 하면 false, 즉 0이되고
if(0 == spans[2].innerHTML) 이 비교되는데 때마침 spans[2].innerHTML이 이면
이 if문이 참이되겠죠.


2. selectable 이라는 전역변수를 추가하여 수정해보았는데, 소스 분석해보세요.

<script>
var selectable = true;
function randNum(obj){
if(selectable == false)
return;
/*ar p = document.getElementById("result");
if(p.innerHTML!=""){
return;
}*/
var n = Math.floor(Math.random()*3);
obj.innerHTML=n;
if(obj.id == "last") {
checker();
selectable = false;
}
}
function checker(){
var spans = document.getElementsByTagName("span");
var p = document.getElementById("result");

if(spans[0].innerHTML == spans[1].innerHTML && spans[0].innerHTML== spans[2].innerHTML){
p.innerHTML="Success(click here to do again)";
}
else
p.innerHTML="fail(click here to do again)";
}
function retry(){
var spans = document.getElementsByTagName("span");
var p = document.getElementById("result");
for(var i=0; i<spans.length;i++)
spans[i].innerHTML=0;
p.innerHTML="";

selectable = true;
}
</script>
파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
위로