如何解决尝试使用提示时,addEventListener 在页面加载时触发
我无法让 addEventListener
仅在点击时触发,而不是在页面加载时触发。
我尝试为提示寻找 addEventListener
的答案,但只找到了警报的答案并尝试了它们,但没有任何效果。
const poll = {
question: 'What is your favorite programming language?',options: [ '0: JavaScript','1: PHP','2: Rust','3: C++' ],registerNewAnswer:
Number( prompt( 'What is your favourite programming language?\n' +
' 0: JavaScript\n' +
' 1: PHP\n' +
' 2: Rust\n' +
' 3: C++' ) ),answerPoll() {
switch ( this.registerNewAnswer ) {
case 0:
this.answers[ 0 ]++;
console.log( this.answers,'Vote for JavaScript' );
break;
case 1:
this.answers[ 1 ]++;
console.log( this.answers,'Vote for PHP' );
break;
case 2:
this.answers[ 2 ]++;
console.log( this.answers,'Vote for Rust' );
break;
case 3:
this.answers[ 3 ]++;
console.log( this.answers,'Vote for C++' );
break;
default:
console.log( 'Not a Choice on the List Try Again!' );
}
},answers: new Array( 4 ).fill( 0 )
};
document.querySelector( '.poll' ).addEventListener( 'click',poll.answerPoll.bind( poll ) );
解决方法
您的 registerNewAnswer
是一个属性,它试图通过提示您输入您最喜欢的编程语言来计算该属性。如果您的目标是让该提示仅在调用 answerPoll()
时发生,则 registerNewAnswer
需要是由 answerPoll()
调用的方法。
const poll = {
question: 'What is your favorite programming language?',options: [ '0: JavaScript','1: PHP','2: Rust','3: C++' ],registerNewAnswer() { /* <—- you made this a property instead of a method */
return Number( prompt( 'What is your favourite programming language?\n' +
' 0: JavaScript\n' +
' 1: PHP\n' +
' 2: Rust\n' +
' 3: C++' ) )
},answerPoll() {
switch ( this.registerNewAnswer() /* <—- you weren't calling the registerNewAnswer method */ ) {
// ...
}
},answers: new Array( 4 ).fill( 0 )
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。