inflearn logo
강의

Course

Instructor

Learning JavaScript while making web games

indexOf & Number Baseball Implementation

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

226

newri08071128

4 asked

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

Answer 0

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

0

275

1

카드 짝맞추기 react-native

0

340

0

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

0

336

1

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

0

202

1

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

0

205

1

질문입니다.

1

357

1

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

0

323

2

질문드립니다.

0

188

0

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

0

243

1

document.createElement('')함수에서

0

244

2

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

0

278

1

안녕하세요 제로초님

0

736

1

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

0

243

1

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

0

314

1

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

0

272

3

?

0

149

1

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

0

564

1

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

0

171

1

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

0

453

4

지뢰찾기 에러 관련 질문!

0

479

3

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

0

239

2

Array/Object spread

0

202

1

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

0

219

1

질문있습니다!

0

240

1