를 증가 I가 다음 코드카운터
class battleShips {
constructor(squareNr) {
this.squareNr = squareNr;
this.createField();
}
createField() {
let shipsCount = 0;
for (let i = 0; i < this.squareNr; i++) {
let fieldSquare = document.createElement("div");
fieldSquare.className = "squareStyle";
document.querySelector(".arrayWrap").appendChild(fieldSquare);
fieldSquare.setAttribute("value", "false");
this.selectShips(fieldSquare, shipsCount);
}
}
selectShips(square, count) {
square.addEventListener("click", function() {
if (square.getAttribute("value") === "false") {
square.setAttribute("value", "true");
square.style.backgroundColor = "green";
count += 1;
console.log(count);
document.querySelector(".shipCounter").textContent = "You have selected " + count + " ships";
} else {
square.setAttribute("value", "false");
square.style.backgroundColor = "white";
count -= 1;
document.querySelector(".shipCounter").textContent = "You have selected " + count + " ships";
}
})
}
}
var a = new battleShips(25);
.arrayWrap {
height: 500px;
width: 500px;
border: black solid;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
}
.squareStyle {
height: 98px;
width: 98px;
border: 1px black solid;
}
<div class="arrayWrap"></div>
<p class="shipCounter"></p>
내가 달성하기 위해 노력하고있어 때마다 당신이 광장 1로 shipsCount
변수 단위를 클릭 있다는 것입니다,하지만 당신과 같은 아래의 단락에서 볼 수 있습니다. 그리고 카운트 변수를 기록하면 1을 초과하지 않고 한 번만 증가합니다.
원하는대로 작동하려면 어떻게해야합니까?
귀하의 카운트 변수가 될 필요 : 아니 좋은 때마다 그 클래스의 인스턴스를 이벤트 처리기를 제공하는 방법하지만 작품 (consoloe 로그를 참조하십시오, 그것은 진짜로 카운트 업 또는 동일한 인스턴스) 높은 범위에서 선언했다. –
콘솔 출력에 오류가 있는지 확인 했습니까? – HBP
Scott이 맞습니다. 카운트는 실제로 "글로벌 변수"가 될 수 있습니다. 실제로는 클릭 할 때마다 카운트가 표시됩니다. – Aks