inflearn logo
강의

講義

知識共有

Webゲームを作成して学ぶJavaScript

indexOf&数字野球の実装

iput 입력글자 제한에러...

227

newri08071128

投稿した質問数 4

0

안녕하세요 선생님

강의 잘듣고 있습니다

다른 기능은 잘되는데 

input창에 처음으로 답을  입력할때  4글자 까지 입력이 되는데 

2번째 입력할때  입력 글자가 3글자로 제한되는데.. 뭐가 문제일 까요 ㅠㅠㅠ 

아 , 그리고 또 궁금한점이 

함수 숫자뽑기() 에서 처음에는 조건이 

var i = 0i < 4i += 1

로 쓰이는데 

틀리면  조건이

var i = 0i < 3i += 1

으로 쓰는건 왜인가요??

// 숫자야구



var 바디 = document.body;

var 숫자후보;
var 숫자배열;
function 숫자뽑기() {
    숫자후보 = [123456789];
    숫자배열 = [];
    for (var i = 0i < 4i += 1) {
        var 뽑은것 = 숫자후보.splice(Math.floor(Math.random() * (9 - i)), 1)[0];
        숫자배열.push(뽑은것);
    }
}

// 문제 시작 
숫자뽑기();
console.log(숫자배열);  // 게임 답 확인용


var 결과 = document.createElement("h3");
바디.append(결과);


var  = document.createElement('form');
document.body.append();
var 입력창 = document.createElement('input');
.append(입력창);
입력창.maxLength = 4// input 입력 4글자로 제한
var 버튼 = document.createElement('button');
버튼.textContent = "입력";
버튼.style.marginLeft = '3px';
.append(버튼);
var 결과창 = document.createElement('div');
document.body.append(결과창);



var 틀린횟수 = 0;
.addEventListener('submit'function 콜백함수(e) {
    e.preventDefault();
    var  = 입력창.value;
    if ( === 숫자배열.join("")) {
        // 답이 맞으면
        결과.textContent = "홈런";
        입력창.value = " ";
        입력창.focus();
        // 새로운 문제 내기  
        숫자뽑기();
        틀린횟수 = 0;
    } else {
        // 답이 틀리면
        var 답배열 = .split(" ");
        var 스트라이크 = 0;
        var  = 0;

        틀린횟수 += 1;

        if (틀린횟수 > 4) {  // 4번 넘게 틀리면
            결과.textContent = '4번 넘게 틀려서 실패! 답은' + 숫자배열.join(',') + '였습니다.';
            입력창.value = " ";
            입력창.focus();

            // 새로운 문제 내기  
            숫자뽑기();

            틀린횟수 = 0;
        } else {  // 4번 미만으로 틀리면
            console.log('답이 틀리면'답배열); // 에러 확인용
            for (var i = 0i < 3i += 1) {
                if (Number(답배열[i]) === 숫자배열[i]) {  // 같은 자리인지 확인
                    스트라이크 += 1;
                    console.log('같은자리?'); // 에러 확인용
                } else if (숫자배열.indexOf(Number(답배열[i])) > -1) { //같은 자리는 아니지만, 숫자가 겹치는지 확인 && 여기서 -1 은 indexOf에서 없는값을 의미
                     += 1;
                    console.log('겹치는 숫자?'); // 에러 확인용

                }



            }






            결과.textContent = 스트라이크 + "스트라이크" +  + "볼 입니다";
            입력창.value = " ";
            입력창.focus();
        }


    }
});

질문 javascript

回答 0

리팩토링 관련 질문입니다. (자스스톤)

0

276

1

카드 짝맞추기 react-native

0

340

0

필터 메소드 관련 질문입니다.

0

339

1

가위바위보 게임 질문드립니다~

0

204

1

자바스크립트 기초에 관해서 질문있습니다.

0

208

1

질문입니다.

1

359

1

이벤트 리스너 안에서 동작 질문드립니다.

0

325

2

질문드립니다.

0

190

0

안녕하세요 깊은 복사 부분에서 질문 있습니다.

0

245

1

document.createElement('')함수에서

0

247

2

안녕하세요 클로저 부분에서 질문 있습니다.

0

280

1

안녕하세요 제로초님

0

738

1

끝말잇기 화면에 출력 반복문을 이용해서 횟수 제한

0

245

1

안녕하세요 제로초님 질문있습니다

0

317

1

안녕하세요 강의 정말 잘시청하고있습니다.

0

275

3

?

0

152

1

틱택토 게임에서 게임이 끝나고

0

566

1

9 곱하는게 이해가 안 되요~

0

174

1

지뢰찾기 에러잡아내기에서 질문있습니다!

0

455

4

지뢰찾기 에러 관련 질문!

0

482

3

리팩토링에 관한 질문입니다.

0

241

2

Array/Object spread

0

204

1

지뢰찾기게임에서 Math.random() 질문

0

224

1

질문있습니다!

0

241

1