html - Typescript-Button 事件没有被触发
问题描述
嘿伙计们,我刚开始学习打字稿,我尝试在打字稿中编写一个 javascript 示例,但是如果我运行代码并按下按钮,什么也没有发生。
而且我还在寻找我的示例或资源来学习将 typescript 集成到 HTML 中,因为我是 Web 编程新手,但在 java/python 方面有多年经验
打字稿.ts
class Example{
constructor(){
let button=document.getElementById("b");
button.addEventListener("click", (e:Event)=>this.feedTheButton)
}
greatestOfTwo=(first:number,second:number):number=>{
if (first>second){
return first
}else{
return second
}
}
feedTheButton(){
let first:number = parseInt((<HTMLInputElement>document.getElementById("f")).value);
let second:number=parseInt((<HTMLInputElement>document.getElementById("d")).value);
let result:number=this.greatestOfTwo(first,second)
let place=document.getElementById("write")
place.innerHTML=result.toString()
}
}
new Example();
索引.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="typescript.js"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>
Type a number
<input type="text" id="f" size="4">
</p>
<p> Type another number
<input type="text" id="s" size="4">
</p>
<button id="b" class="myButton" value="click">Get The Larger Number</button>
<P>The Larger number of the two is: <span id="wrote"></span></P>
</body>
</html>
解决方案
直接将this.feedTheButton函数作为参数传递。
class Example{
constructor(){
let button=document.getElementById("b");
button.addEventListener("click", this.feedTheButton.bind(this)) // Directly pass the function as parameter
}
greatestOfTwo=(first:number,second:number):number=>{
if (first>second){
return first
}else{
return second
}
}
feedTheButton(e){
let first:number = parseInt((<HTMLInputElement>document.getElementById("f")).value);
let second:number=parseInt((<HTMLInputElement>document.getElementById("s")).value); // Changed this value to 's' because your input id is 's'
let result:number=this.greatestOfTwo(first,second)
let place=document.getElementById("wrote")
place.innerHTML=result.toString()
}
}
new Example();
你的 html 应该是这样的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>
Type a number
<input type="text" id="f" size="4">
</p>
<p> Type another number
<input type="text" id="s" size="4">
</p>
<button id="b" class="myButton" value="click">Get The Larger Number</button>
<P>The Larger number of the two is: <span id="wrote"></span></P>
<script src="typescript.js"></script>
</body>
</html>
推荐阅读
- javascript - 如何加快几个异步任务?
- python - 使用 python re lib 解析“用户定义 xpath”脚本
- apache-spark - Pyspark EMR 中步骤的 Cloudformation 模板
- javascript - 尝试导入错误:“addToCart”未从“../actions/cartActions”导出。使用 Redux
- r - r fread:如何阅读没有分隔符的 txt
- powerbi - 用户退出时如何处理 PowerBI 工作区和 OneDrive 文件同步?
- kubernetes - 使用 OpenShift 时必须使用 RedHat 操作系统吗?
- angular - 如何将 Angular Material Stepper 的 matStepperNext 按钮显示为启用/禁用?
- php - 尝试访问 PhpSpreadsheet 中 null 类型值的数组偏移量
- go - 如何使这个 golang for-select 代码工作?