왜 이것이 작동하지 않는지 이해할 수 있습니까? OK 프롬프트 내가 크롬이를 테스트 할 때confirm() 결과를 기반으로 새 객체 만들기
<button class="btn btn-primary btn-lg btn-border select-color" id="ace-select" type='submit' role="button">Select</button>
이 버튼을 클릭하면 확인을 (가 나타납니다) 예상대로하지만 클릭 : 여기
function Agent(codename, str, acc, spd, int, lock, cqc, stl, lck) {
"use strict";
this.codename = codename;
this.str = str;
this.acc = acc;
this.spd = spd;
this.int = int;
this.lock = lock;
this.cqc = cqc;
this.stl = stl;
this.lck = lck;
this.avg = function() {
return (this.str + this.acc + this.spd + this.int + this.lock + this.cqc + this.stl + this.lck)/8;
};
}
document.getElementById("ace-select").addEventListener("click", function() {
"use strict";
var r = confirm("Are you sure you want Ace?");
if (r === true) {
var ace = new Agent("Ace", 8, 9, 9, 9, 8, 10, 10, 5);
}
}, false);
내 단추에 대한 HTML입니다 : 여기 내 JS 코드 예상대로 내 개체를 만들지 않습니다. 나는 오류가 발생한다 : "Uncaught ReferenceError : 에이스는 1시 1 분에 정의되지 않았다."
나는이 똑같은 코드를 콘솔에 넣으면 바로 사용할 수있다. 이 경우, 나는있는 그대로의 객체 생성자를 붙여하지만 난의 EventListener 부분을 생략 만에 붙여 넣 확인() 상자가 팝업, 이전과
var r = confirm("Are you sure you want Ace?");
if (r === true) {
var ace = new Agent("Ace", 8, 9, 9, 9, 8, 10, 10, 5);
}
내가 확인을 클릭하면, 그것을 평가 ~ true
예상대로 내 개체가 만들어집니다.
내가 이벤트 리스너 내부에있을 때 작동하지 않는다고 잘못 생각합니까?
완전히 다른 방식으로 수행해야하는 경우 언제든지 알려 주시기 바랍니다. 이 작업을 수행하는 목적은 코드를 작성하는 데 경험을 쌓기위한 것이므로 해결해야 할 문제가 있음을 완전히 예상 할 것으로 기대되며 모범 사례를 배우는 것이이 작업의 일부가 될 것이라는 것을 잘 알고 있습니다. –
나는 오류가 선언에 없다고 생각한다. 당신은 출력을 위해 에이스를 부를 것입니까? 에이스의 범위는 if와 else 어디에도 없습니다. – TypedSource
'ace'의 범위는 그것이 들어있는'function'입니다. ** if 문이 아닙니다. if 문 다음에'console.log (ace)'를 추가하여 이것을 테스트 할 수있다. – Optimae