当前位置: 首页 > 知识库问答 >
问题:

如何用HTML输入值构造TypeScript对象?

公孙志尚
2023-03-14

这应该是非常基本的,但我无法通过它。

我有一门课,比如:

class MyObject {
    value: number;
    unit: string; 

    constructor(value: number, unit: string){
         this.value = value;
         this.unit = unit;
    }
}

然后在HTML中,

    <input id="myValue" type="number"></input>
    <input id="myUnit" type="text"></input>

我想使用myValue和myUnit创建一个“MyObject”类的对象。我该怎么做?

比如:

    var value = document.getElementById("myValue");
    var unit = document.getElementById("myUnit"); 
    myObject: MyObject = new MyObject(value, unit);

不能用上面的方法做这件事。有什么办法呢?

共有3个答案

岳泉
2023-03-14

改变:

var value = document.getElementById("myValue");
var unit = document.getElementById("myUnit"); 
myObject: MyObject = new MyObject(value, unit);

致:

var value = parseFloat(document.getElementById("myValue").value);
var unit = parseFloat(document.getElementById("myUnit").value); 
myObject: MyObject = new MyObject(value, unit);
蒋联
2023-03-14
let value : number = parseFloat((<HTMLInputElement>document.getElementById("myValue")).value);
let unit : string = (<HTMLInputElement>document.getElementById("myUnit")).value; 

myObject: MyObject = new MyObject(value, unit);

也可以这样写:

let value : number = parseFloat((document.getElementById("myValue") as HTMLInputElement).value);
let unit : string = (document.getElementById("myUnit") as HTMLInputElement).value; 

myObject: MyObject = new MyObject(value, unit);

请注意,我没有使用var,而是使用let,这使您能够更好地控制代码。

注:使用as或直接浇铸过孔

在typescript教程中,他们还使用“as”:http://www.typescriptlang.org/docs/handbook/asp-net-4.html

计燕七
2023-03-14

以下是TypeScript中的最终答案(将HtmleElement强制转换为HTMLInputElement的参考:HtmleElement类型的值上不存在属性“value”)

var value = parseFloat((<HTMLInputElement>document.getElementById("myValue")).value);
var unit = (<HTMLInputElement>document.getElementById("myUnit")).value; 
myObject: MyObject = new MyObject(value, unit);

将HTMLElement强制转换为HTMLInputElement很重要,否则TypeScript中HTMLElement的“value”属性不存在,TypeScript编译器将显示错误。

 类似资料:
  • 8.5. 构造值对象 Go有一个内建的new函数,用于在堆上为任意类型变量分配一个空间。新分配的 内存会内自动初始化为0。 例如,new(int) 会在堆上分配一个整型大小的空间, 然后初始化为0,然后返回 *int 类型的地址。 和C++中不同的 是,new是一个函数而不是运算符,因此 new int 用法是错误的。 对于字典和管道,必须用内建的make函数分配空间。对于没有初始化的字典或 管道

  • 问题内容: 我是HTML的新手,正在尝试学习如何使用表单。 到目前为止,我最大的问题是对齐表格。这是我当前的HTML文件的示例: 问题在于,“电子邮件”后的字段框与名字和姓氏相比在空格方面有很大不同。使其真正“排队”的“正确”方法是什么? 我正在尝试练习良好的格式和语法…很多人可能不确定使用CSS来做到这一点,到目前为止,我仅了解HTML的基本知识。 问题答案: 另一个使用CSS的示例,我只是将表

  • 问题内容: 我在作业上碰壁,一直在梳理网站以寻求任何有用的信息(出现空白)。我需要创建一个类,在该类中创建一个构造函数,然后再创建一个子类以扩展超类。然后,我需要使用main方法创建一个新文件来演示这两种情况。从概念上来说没问题。 我的问题是:如何使用构造函数初始化对象,但需要用户输入? 现在我得到的错误是:“类CarRental中的构造函数CarRental无法应用于给定类型;必需:String

  • 问题内容: 注意: 以下答案与评论反映了2009年旧版浏览器的状态。现在,您实际上可以在2017年使用JavaScript和dataTransfer或FileList对象动态/以编程方式设置文件输入元素的值。 有关详细信息和演示,请参见此问题的答案: 如何以编程方式设置文件输入值(即:拖放文件时)? 如何设置此值? 问题答案: 由于安全原因,您不能。 想像: 您不希望所访问的网站能够做到这一点,对

  • 问题内容: 如何在输入框中获取输入框中的值? 问题答案: 每次释放键都会触发onkeyup。虽然它看起来是解决方案,但它仍然存在一些问题。 如果用户使用箭头移动光标,则会触发该光标,并且您必须检查自己是否字段值没有更改。 如果用户使用鼠标在输入字段中复制/粘贴一个值,或者在浏览器中单击“撤消/重做”,则不会触发。 就像在Mac或Google文档中一样,我不想保存按钮来在我们的应用程序中提交表单,这

  • 我想给一个对象里所有值为null的属性赋其它值,比如: 有没有大佬知道 assignDefaults 这个函数如何实现?