Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .value和textContent有问题_Javascript_Html - Fatal编程技术网

Javascript .value和textContent有问题

Javascript .value和textContent有问题,javascript,html,Javascript,Html,这是我的日常训练,我几乎了解JS网站的一切。但今天我遇到了一个问题,这很奇怪,因为我一直在处理这些问题,但Idk为什么它总是给我错误。当鼠标悬停在basketTotal.textContent=total上时,错误p是类型“number”不能分配给类型“string”,并且也有问题。value也是这个错误的原因属性“value”在类型“Element”上不存在。我以前从未见过这样的东西。尝试创建一个购物篮,只是为了训练。 谢谢 表单验证 身体{ 保证金:0; } * { 字体系列:Arial、

这是我的日常训练,我几乎了解JS网站的一切。但今天我遇到了一个问题,这很奇怪,因为我一直在处理这些问题,但Idk为什么它总是给我错误。当鼠标悬停在
basketTotal.textContent=total
上时,错误p是
类型“number”不能分配给类型“string”
,并且
也有问题。value
也是这个错误的原因
属性“value”在类型“Element”上不存在。
我以前从未见过这样的东西。尝试创建一个购物篮,只是为了训练。 谢谢


表单验证
身体{
保证金:0;
}
* {
字体系列:Arial、Helvetica、无衬线字体;
}
输入{
大纲:无;
}
.集装箱{
显示器:flex;
宽度:100vw;
高度:100vh;
}
.首先{
宽度:50%;
保证金:1雷姆0 0 1雷姆;
}
.第二{
保证金:2Rem0;
宽度:500px;
高度:250px;
边框:#E62px实心;
边界半径:.75rem;
}
你的篮子:


哈利波特系列丛书(新版)5$ 数量:


清洁代码手册(新设计)3$ 数量:




交付方式: 产后 飞机交付 卡车运输 自行车递送 哈利波特系列丛书(新版): 清洁代码手册(新设计): 交付方式:
提交
你的总篮数: //@ts支票 常数篮=()=>{ 设hBook=document.querySelector('.hBook').value; 让cBook=document.querySelector('.cBook').value; hBook=parseInt(hBook); cBook=parseInt(cBook); 设hBook_total=hBook*5; 设cBook_total=cBook*3; 合计=hBook\u合计+cBook\u合计; const calculate=document.querySelector('#calculate'); const basketTotal=document.querySelector('.total'); calculate.addEventListener('单击',()=>{ basketTotal.textContent=总计 }) }
您正在使用TypeScript。您的
total
是一个数字,但元素的
.textContent
只能是一个字符串。为了让TypeScript理解您所做的不是错误,您需要在分配数字时将其显式转换为字符串

const total = String(hBook_total + cBook_total);
另一个问题是TypeScript只知道
document.querySelector('.hBook')
返回一个元素,而不是HTMLInputElement。在TypeScript语法中,向编译器指示所选内容的正确方法是使用泛型:将
HTMLInputElement
作为类型参数传递给
querySelector

let hBook = document.querySelector<HTMLInputElement>('.hBook').value;
let cBook = document.querySelector<HTMLInputElement>('.cBook').value;
let hBook=document.querySelector('.hBook').value;
让cBook=document.querySelector('.cBook').value;
但是为了使用它,您需要在一个TypeScript文件中进行编写——它在JavaScript语法中不起作用

如果您想使用TypeScript的类型检查,标准的专业做法是将JS移动到一个独立的
.ts
文件中(允许您使用TypeScript语法,例如泛型参数),并让TypeScript分析
.ts
文件并将其转换为JavaScript。这是我极力推荐的方法。在
标记中使用内联JavaScript非常奇怪,TypeScript会对其进行类型正确性分析


另一个(更糟糕的)选项是删除JavaScript中的
/@ts检查
,以删除类型脚本类型检查。

脚本标记可以将代码作为文本或src包含在内,但不能同时包含两者。“basket()在哪里被调用?注意:您只希望在单击事件发生时获取并处理相关值。请参见idk如何使用TypeScript。我还没学会。你已经在使用打字脚本了。您收到的警告是TypeScript错误。要么学习如何使用TypeScript(我强烈建议,这会使编写脚本更容易),要么禁用它。有人告诉我这个
@//ts check
,我认为它很有用,但我不知道它与TypeScript有关。无论如何,我计划学习TS,但仍然无法解决
.value
的问题。它的用处微乎其微-最好是在
.TS
TypeScript文件中正确使用TypeScript,或者(如果你根本不知道TypeScript)禁用TypeScript类型检查。就像我说的,对于
.value
,在检索值时使用TypeScript和泛型参数:
document.querySelector('.hBook').value
或通过深入查看
@//ts检查
完全删除类型脚本类型检查。