2012-04-03 5 views
0

javascript에 sd [16] [16] 및 gd [16] [16] 두 개의 배열이 있습니다. 나는 배열의 값을 비교할 필요가있다.자바 스크립트의 변수

var score=0; 
document.write("<table>"); 
for(c1=0; c1<16; c1++) 
{ document.write("<tr>"); 
    for(c2=0; c2<16; c2++) 
     document.write("<td onClick='changeColor(this);'>" + gd[c1][c2] + "</td>"); 
    document.write("</tr>"); 
} 
document.write("</table>"); 

function changeColor(tdd) 
{ 
    if(tdd.bgColor=='white') 
    { 
     tdd.bgColor='red'; 
     if (gd[c1][c2] == sd[c1][c2]) 
      score+=5; 
     else 
      score-=2; 
    } 
    else 
    { 
     tdd.bgColor='white'; 
    } 
} 

그러나 나중에 점수를 표시하려고하면 점수가 표시되지 않습니다.

function scc() 
{ 
    document.getElementById('scf').innerHTML = score; 
} 
</script> 
<br><br><center><button type='button' onclick='scc()'> Click to see current score</button> <p id="scf">0</p> </center> 
<br><br> <center><input type="submit" value="Get Solution"/></center> 

누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?

+1

함수 인 경우 전역 변수로 "score"를 초기화하십시오. –

답변

0

그것은 좀 더 많은 작업입니다하지만 당신은 고립 된 점수 변수를 유지하는 클로저를 사용할 수 있습니다 : 그것은 모든 곳에서 사용할 수 있도록, 모든 기능 이외의 점수 변수를 정의 할 수 있습니다.

var score = (function() { 
    var currentScore = 0; 
    return { 
     getScore: function() { return currentScore; }, 
     updateScore: function(change) { currentScore += change; } 
    } 
})() 

한 다음/얻을이 같은 점수를 설정할 수 있습니다 score.getScore();score.updateScore(5); score.updateScore(-4)

실수로 점수를 밟는에 대해 걱정할 필요가 없습니다 이쪽으로.

+0

함수가 끝나면 여분의 대괄호를 넣었거나 필요한 것입니까? – amrita

+0

'[]'괄호가 무엇인지 모르십니까? 당신이 말하는 겁니다. 어쩌면 뒤에 나오는 괄호'()'를 의미할까요? 마지막 줄에. 그것들은 방금 정의한 익명 함수가 스스로를 호출하고'getScore :'와'updateScore :'를 사용하여 객체를 반환 할 것입니다. – Clay

0

점수 변수를 초기화하는 것을 잊었습니다. 이제 changeColor 함수에서만 점수를 사용할 수 있습니다.

 

<script type="text/javascript"> 
var score = 0; 
document.write ... 
</script> 
 
+0

나는 이미 점수를 초기화했지만 문제가되고 있습니다. – amrita

+0

그리고 정확히 무슨 문제입니까? –

+0

'점수를 보려면 클릭하십시오'버튼을 클릭하면 점수가 표시되지 않습니다. – amrita