다음에서 값으로타자기의 요소
현재 사용자가 입력 양식에 삽입할 값을 가져오려고 합니다.바닐라 자바스크립트에서, 저는 단지 ID나 클래스 등으로 요소를 타겟팅할 수 있고, 그리고 나서 저는 그 방법을 실제로 사용하기 위해 .value 방법을 사용할 수 있습니다.어떤 이유에서인지 typescript는 그렇게 할 수 없습니다. typescript는 javascript의 상위 집합이기 때문에 이해할 수 없습니다.순수 타자기의 입력 요소에서 값을 얻는 구체적인 방법이 있습니까? 아니면 각도 같은 것을 사용해야 합니까?
유형 스크립트 코드:
interface IUserFoodOptions {
food: string;
calories: number;
foodDate: any;
}
class Food implements IUserFoodOptions {
food: string;
calories: number;
foodDate: any;
// store all the calories in an array and calculate the total amount of calories
caloriesArray: number[] = [];
// constructor
constructor(food: string, calories: number, foodDate: any) {
this.food = food;
this.calories = calories;
this.foodDate = foodDate;
}
}
// event listener for when the add food button is clicked
let addFood = document.getElementById("add-food-button").addEventListener("click", () => {
// get the values from inputs and store them in an array
let foodName = document.getElementById("food-name-val");
let foodCalories = document.getElementById("calories-val");
let dateVal = document.getElementById("date-val");
// store these values in a list and display them below
// user will have the ability to edit and delete them
// am I create event listeners within event listeners
});
VSCode와 같은 편집기를 사용하여 Typescript를 작성하는 경우에는 Typing 시스템에서 발생하는 작업에 대해 자세히 알아보는데 코드를 검사하는 기능이 매우 유용하다는 것을 알게 되었습니다.VSCode에서 Method(또는 유형)를 마우스 오른쪽 버튼으로 클릭하고 다음을 선택할 수 있습니다.Go to definition
.
질문에 있는 방법을 검사하는 중입니다.getElementById
당신은 그것이 반환하는 것을 볼 수 있습니다.HTMLElement
이 유형에는 다음이 없습니다.value
그 위에 있는 재산.이는 다음과 같습니다.getElementById
아무 것이나HTMLElement
그것이 있는 한 페이지에id
기여하다.전부는 아닙니다.HTMLElement
을 가지고 있음에도value
속성(예: a)div
/span
/p
등).
예상되는 유형을 알고 있지만 유형 시스템에서는 이 작업을 수행할 수 없기 때문에 유형 스크립트에 어떤 유형의 요소를 선택해야 합니다.선택한 요소의 유형을 다음과 같이 캐스팅하여 이 작업을 수행할 수 있습니다.const inputElement = <HTMLInputElement> document.getElementById("food-name-val");
또는const inputElement = document.getElementById("food-name-val") as HTMLInputElement;
이제 Typescript가 선택한 요소를 인식하기 때문에HTMLInputElement
액세스할 때 오류가 발생하지 않습니다.value
그 위에 있는 재산.
당신의 경우는 다음과 같습니다.let foodName = (document.getElementById("food-name-val") as HTMLInputElement).value;
네, TypeScript에는 "작은 문제"가 있지만 안전을 위한 것입니다.
다음과 같은 작업을 수행하여 입력 값을 얻을 수 있습니다.
var inputValue = (<HTMLInputElement>document.getElementById(elementId)).value;
이 캐스팅에 대한 자세한 내용은 여기에서 확인할 수 있습니다.유형스크립트: HTML 요소 캐스팅
효과가 있기를 바랍니다!
TypeScript에서 입력값을 얻을 수 있습니다.숫자에 대해서는,
var num = parseFloat((<HTMLInputElement>document.getElementById("myValue")).value);
or
let num : number = parseFloat((<HTMLInputElement>document.getElementById("myValue")).value);
문자열;
var str = (<HTMLInputElement>document.getElementById("myUnit")).value;
or
let str : string = (<HTMLInputElement>document.getElementById("myUnit")).value;
HTMLElement를 HTMLInputElement에 캐스트하는 것이 중요합니다. 그렇지 않으면 TypeScript의 HTMLElement에 대한 'value' 속성이 존재하지 않으며 TypeScript 컴파일러에 오류가 표시됩니다.
// event listener for when the add food button is clicked
let addFood = document.getElementById("add-food-button").addEventListener("click", () => {
// get the values from inputs and store them in an array
let foodName = (<HTMLInputElement>document.getElementById("food-name-val")).value;
let foodCalories = parseFloat((<HTMLInputElement>document.getElementById("calories-val")).value);
let dateVal = (<HTMLInputElement>document.getElementById("date-val")).value;
// And so on ...
});
다음 코드가 더 읽기 쉽다고 생각합니다.
const user: string = document.querySelector<HTMLInputElement>('input[name="user"]').value;
언급URL : https://stackoverflow.com/questions/53071851/getting-the-value-from-input-element-in-typescript
'programing' 카테고리의 다른 글
Python 3에서는 부동소수점 값 4*0.1이 좋아 보이지만 3*0.1은 그렇지 않은 이유는 무엇입니까? (0) | 2023.07.05 |
---|---|
논리 벡터에서 TRUE 값을 카운트하는 방법 (0) | 2023.07.05 |
사용자 지정 라이브러리 구성 요소는 알려진 요소가 아니지만 앱이 컴파일 및 실행됩니다. (0) | 2023.07.05 |
Firebase 전자 메일 확인이 스팸 폴더로 이동합니다. (0) | 2023.07.05 |
단일 개체에 대한 .filter() vs.get()? (장고) (0) | 2023.07.05 |