javascript - 尝试使用提示时,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 )
};
推荐阅读
- php - 如何修复 303 查看 PHP CodeIgniter 中的其他错误
- ionic-framework - 如果应用程序被杀死,(离子)handleNotificationReceived 不会被调用
- sql - 如何使用过滤运行 Row_Number()
- ios - 如何从自己的应用程序重定向到相机胶卷照片
- python - 从 Gitlab 部署 python azure 函数应用程序
- python - 如何在熊猫中找到两个字符串之间的相关性
- extjs - 如何将使用 Ext.create 添加的对象添加到我的视口?
- javascript - 发送表单后如何重定向到 JS / jQuery 中的另一个页面?
- perspective - 我们如何在opencv中进行多点翘曲
- python - PyQt5在当前帧之前/之后检索帧