innerHTML返回带有文本的NaN
innerHTML return NaN with text
我遇到一个问题,我试着用innerHTML
返回一个值,但我得到了一个NaN。我知道我的变量不是一个数字,但为什么他一直告诉我这个?
function checkWord(id, nameOutput){
var pattern = new RegExp("''b(hello|world)''b", "i");
var fieldValue = document.getElementById(id).value;
var result = fieldValue.search(pattern);
if (result != -1){
document.getElementById(nameOutput).style.color = "green";
document.getElementById(nameOutput).innerHTML = +fieldValue+ " is correct";
}
else{
document.getElementById(nameOutput).style.color = "red";
document.getElementById(nameOutput).innerHTML = +fieldValue+ " is incorrect";
}
if(fieldValue == null || fieldValue == ""){
document.getElementById(nameOutput).style.color = "orange";
document.getElementById(nameOutput).innerHTML = "Empty field";
}
}
我总是得到NaN是不正确的或NaN是正确的为什么我不能得到值打印?
如果我这样写:
document.getElementById(nameOutput).innerHTML ="" +fieldValue+ " is correct";
document.getElementById(nameOutput).innerHTML ="" +fieldValue+ " is incorrect";
一切正常!!但为什么我需要写这个 ""
在innerHTML
我做错什么了吗
变化
document.getElementById(nameOutput).innerHTML = +fieldValue+ " is correct";
document.getElementById(nameOutput).innerHTML = fieldValue + " is correct";
,因为= +fieldValue
在其他方面缺少添加/连接到fieldValue
的东西。因此,对一个数字进行强制转换,结果是一个未定义的数字,或NaN。
当你尝试
document.getElementById(nameOutput).innerHTML ="" +fieldValue+ " is correct";
您提供了要连接到fieldValue
的内容,即一个空字符串,因此在fieldValue
上没有执行数字转换。
这是因为您进行了转换 (+fieldValue
)到number
。当你添加""
在你面前,使转换到string
(""+fieldValue
)。你可以在这里阅读更多关于JavaScript类型转换的内容
使用这个,我希望一切都很好。不要在fieldValue前使用"+"号,因为它试图与之前尚未定义的字段连接。
document.getElementById(nameOutput).innerHTML = fieldValue+ " is incorrect";
,并确保"fieldValue"是否出现,在上面的行之前发出警报,如。
alert("Value of "+fieldValue);
document.getElementById(nameOutput).innerHTML = fieldValue+ " is incorrect";
下面是经过重构的代码的正确版本。希望对你有帮助。
function checkWord(id, nameOutput){
var pattern = new RegExp("''b(hello|world)''b", "i"),
fieldValue = document.getElementById(id).value,
result = fieldValue.search(pattern),
output = document.getElementById(nameOutput),
color, ohtml;
if (result!= -1){
color = 'green';
ohtml = fieldValue + " is correct"
}
else{
color = "red";
ohtml = fieldValue + " is incorrect";
}
if(fieldValue == null || fieldValue == ""){
color = "orange";
ohtml = "Empty field";
}
output.style.color = color;
output.innerHTML = ohtml;
}
谢谢你的回答和解释。
你提高了我的知识。=)一切都很好知道:
document.getElementById(nameOutput).innerHTML = fieldValue+ " is correct";
document.getElementById(nameOutput).innerHTML = fieldValue+ " is incorrect";
我在向innerHTML打印变量编号时遇到了这个错误,我通过为我想要打印的变量分配初始值来解决这个问题。
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 文本框中的描述性文本多于NaN
- JavaScript NaN错误,输入文本显示为NaN
- 计算后,我将“NaN”发送到文本框
- 简斯 |尝试从文本输入中提取内容时接收 NaN 作为输出
- D3:x 轴上的日期名称:<文本>属性 x=“NaN”的值无效
- 从链接的输入字段中删除文本时删除 NaN
- 使用文本输入和parseInt的简单JS函数,返回NaN
- 当使用文本输入字段时,会显示Javascript中的NaN
- 角度文本区域数据为 NaN
- 输入文本框获取NaN值
- Html5下拉菜单将文本重设为NaN
- javascript中的NaN在使用文本输入字段求和时显示
- 无法从文本框(可能是 NAN)输出值的乘法 - 主干.js
- HTML + JavaScript导致文本框出现NaN错误
- 我如何摆脱NaN在我的JavaScript和HTML代码的文本框
- 我如何摆脱在我的JavaScript代码文本框中的NaN
- innerHTML返回带有文本的NaN