Javascript JS——不存在的类型';t处理输入| document.getElementById问题
我需要寻求帮助来解决两个问题Javascript JS——不存在的类型';t处理输入| document.getElementById问题,javascript,document,getelementbyid,typeof,let,Javascript,Document,Getelementbyid,Typeof,Let,我需要寻求帮助来解决两个问题 保存在let中的document.getElementById.value与保存在其他let中的innerHTML不兼容。我看到了一些类似的线索,但它们没有帮助我 当我需要按typeof检查数字时,会出现一个问题,它只是在JS看不到的情况下运行 这是我的密码。谢谢你的建议和帮助 函数工资(){ 让输入=document.getElementById('annualInput')。值; 让output=document.getElementById('resultM
let
中的document.getElementById.value
与保存在其他let
中的innerHTML
不兼容。我看到了一些类似的线索,但它们没有帮助我typeof
检查数字时,会出现一个问题,它只是在JS看不到的情况下运行函数工资(){
让输入=document.getElementById('annualInput')。值;
让output=document.getElementById('resultMonthly').innerHTML;
//它不起作用,但可以与纯document.getElementById('result').innerHTML=input一起使用;
输出=输入;
/*
如果(输入!=''){
//即使使用字符串和数字,此if也不起作用
如果(输入类型=='number')
document.getElementById('result').innerHTML=input;
}否则{
document.getElementById('result').innerHTML='Please,键入您的年工资';
}
*/
//年工资相差12个月
让resultMonthly=input/12;
let showMonthly='您的月工资:'+每月结果。toFixed(2);
//月工资相差20天
让resultDaily=resultMonthly/20;
让showDaily='您的日工资:'+结果daily.toFixed(2);
//每日工资差8小时
设resultHourly=resultDaily/8;
让showHourly='您的小时工资:'+resultHourly.toFixed(2);
如果(输入!=''){
document.getElementById('resultMonthly')。innerHTML=showMonthly+'$';
document.getElementById('resultDaily')。innerHTML=showDaily+'$';
document.getElementById('resultHourly')。innerHTML=showHourly+'$';
}否则{
document.getElementById('resultMonthly')。innerHTML='请键入您的年工资';
}
}
工资应用程序
问题应用程序
WageApp
这是一个按年、月、日和小时计算工资的简单应用程序
你的年薪
我们永远不会和别人分享你的工资。
检查
第1期:
output = input;
if (typeof input == 'number')
这不起作用,因为output
没有引用该元素,而是存储该元素的innerHTML
解决问题1:
output = input;
if (typeof input == 'number')
您的评论是一个很好的开始:
document.getElementById('result').innerHTML = input;
或者,您可以将元素存储到变量中,然后设置innerHTML:
var result = document.getElementById('result');
// later on
result.innerHTML = input;
第二期:
output = input;
if (typeof input == 'number')
这永远不会是真的,因为元素的value属性中存储的值总是字符串
解决问题2:
output = input;
if (typeof input == 'number')
您可以通过多种方法检查输入是否为数字的字符串版本,其中一种方法是测试字符串是否为NaN:
if (!isNaN(input))
由于有很多方法可以进行此检查,我会四处寻找适合您的用例的方法。第1期:
output = input;
if (typeof input == 'number')
这不起作用,因为output
没有引用该元素,而是存储该元素的innerHTML
解决问题1:
output = input;
if (typeof input == 'number')
您的评论是一个很好的开始:
document.getElementById('result').innerHTML = input;
或者,您可以将元素存储到变量中,然后设置innerHTML:
var result = document.getElementById('result');
// later on
result.innerHTML = input;
第二期:
output = input;
if (typeof input == 'number')
这永远不会是真的,因为元素的value属性中存储的值总是字符串
解决问题2:
output = input;
if (typeof input == 'number')
您可以通过多种方法检查输入是否为数字的字符串版本,其中一种方法是测试字符串是否为NaN:
if (!isNaN(input))
由于有很多方法可以进行此检查,我会四处寻找适合您的用例的方法。
innerHTML
和value
是一个带有getter和setter的“神奇”属性。你不能直接参考他们。您可以存储不会更新的当前值,也可以存储节点以使用其魔法属性
输入值总是字符串。您必须使用一元运算符
+
将其强制转换为数字,然后使用数字测试结果。isNaN()
innerHTML
和值
是一个带有getter和setter的“神奇”属性。你不能直接参考他们。您可以存储不会更新的当前值,也可以存储节点以使用其魔法属性
输入值总是字符串。必须使用一元运算符
+
将其强制转换为数字,然后使用number.isNaN()
什么是type=“annualData”
?文本框的类型是字符串,而不是数字。普通输入元素的值是stringwhat istype=“annualData”
?文本框的类型是字符串,而不是数字。普通输入元素的值是StringThank类型,感谢您的快速响应。我有一个问题要你解决第二个问题。我将if更改为您的if(!isNaN(input)),但它仍然接受字符串。如何更改:if(typeof input=='number')只接受数字?使用input=+input
将字符串转换为数字。如果他不能,那将是NaN
@Adam,这取决于用户能否使用逗号(例如:1234.12
)?因为如果他们可以,不要尝试强制(+'1234'
是NaN)。@Kulvar问题是我不希望NaN
,而是希望运行if代码的最后一部分,即else{document.getEleme>