2014-09-26 4 views
0

전함을 만들고 있는데,이 모든 것을 제외하고는 모두 작동합니다. 그리고 나는 당신이 이것을 할 올바른 방법을 알아낼 수 없습니다. 삽입 된 TD의 값이 배열의 값과 일치하는지 확인하고 싶다면 innerHTML을 히트 (X)로 변경하면됩니다. (this)는 클릭 된 TD를 나타냅니다. 이 시나리오에서 indexOf를 사용할 수 있습니까?클릭 한 TD의 값이 배열의 값과 일치하는지 확인하십시오.

function play() { 
      if ((this).value == shipLocations.indexOf((this).value)) { 
       (this).innerHTML = hit; 
      } 
     else { 
      (this).innerHTML = miss;  
     } 
    } 
+0

당신이 오류를 얻고있는 객체? – BassT

+0

오류가 발생하지 않습니다. 가능한 모든 클릭 가능한 td에 대해 else 문으로 이동합니다. – Chrillewoodz

답변

2

<script> 
 
    var shipLocations = ["5"]; 
 
    function play(button) { 
 
     if (-1 != shipLocations.indexOf((button).value)) { 
 
      (button).innerHTML = "hit"; 
 
     } 
 

 
     else { 
 
      (button).innerHTML = "miss"; 
 
     } 
 

 
    } 
 
</script> 
 
<button value="5" onclick="play(this)">meh</button>

선박의 위치가 저장되는 가정하지 선박이

+0

약간 혼란 스럽습니다. 솔루션에 따라 내 상태를 어떻게 다시 작성하겠습니까? IF가 "실패"하고 "실패"를 리턴해야하는 것처럼 느껴지십니까? – Chrillewoodz

+0

-1은 발견되지 않았 음을 의미합니다. 그래서 기본적으로'if ('value'가 "not found"가 아닌) ...' – Oberst

0

사과와 오렌지를 비교하는 것처럼 보입니다. indexOf은 배열에 저장된 배의 실제 위치가 아닌 shipLocations 배열에서 찾고있는 값의 인덱스를 반환합니다.

업데이트

바이올린 쇼, 당신은 또한 잘못된 방법으로 속성을 액세스하는 것을.

if (parseInt((this).getAttribute("value")) == shipLocations[shipLocations.indexOf(parseInt(this.getAttribute("value")))]) { 
     (this).innerHTML = hit; 
} 

this는 HTML 요소를 의미하지 당신이 속성에 액세스 할 .를 사용할 수있는 자바 스크립트 객체 : 다음은 올바른 방법입니다. getAttribute("value")을 사용합니다.

사이드 노트 : 배는 때로 "접촉"하도록 배치됩니다. 난 그 ;-) 불법이라고 생각

+0

예, 저도 그런 느낌을 받았지만 배열을 변경하는 방법을 모르므로 배열의 항목 인 TD의 값을 비교할 수 있습니까? – Chrillewoodz

+0

글쎄, 당신은 얻고있는 색인을 사용하고 실제 위치를 가져와야합니다 :'shipLocations [shipLocations.indexOf (this.value)]' – BassT

+0

그 결과로 모든 클릭 결과는 그 반대가됩니다. 나는 너에게 온갖 일에 매달려있다. – Chrillewoodz

관련 문제