警报( " " ) 在 HTML 中调用时无法正常工作?使用 isNan 来验证浮点数



如果我含糊不清,请原谅我,这是我的第一篇文章,我是一个新手JavaScript作家,实际上是几周前开始的。

我正在为学校在我的网站上工作,由于某种原因,即使调用警报窗口也不会弹出。我可能错过了显而易见的事情,但现在是凌晨 4 点,我已经做了四个小时的作业,五个小时前我刚刚上了 8 小时的班,我很想睡觉。 无论如何,我会发布与代码和错误相关的所有内容,并在醒来时检查(可能是从现在起 6-7 小时)。 我也使用记事本++和Chrome。 另外要澄清的是,除了错误窗口没有弹出之外,一切正常。我相信我拥有的检查数字的isNan很好,但我又是JavaScript的新手,所以可能不是。这是我最关心的两个问题,isNan和警报窗口没有弹出。此外,当我单击按钮将两个数字相加时(这是一个非常简单的程序,用户输入的数字加上 9.99 运输变量),它会在第二个文本框中输出数字。但是,如果我输入"asdas"或字母,第二个文本框将返回"Nan",而不是发出警报窗口。

编辑这个,我不妨把网站扔掉(这是我的学生网站,我希望不应该担心它被黑客入侵)。 它还包含所有更新的数据。 https://wheeloftimestory.000webhostapp.com/

我宁愿不发布我的巨大索引.html因为有很多标签还没有移动到.js文件中,所以它看起来很糟糕。如果这还不够信息,我会尝试更新它。

这是我索引的一部分.html

<script src = "ft.js"></script>
<form id="inputform">
<input name="firstnum" type ="text" size="6"> $ <input name="btn1" type="text" size="6">
<input name="btn2" type="button" value = "Calculate Cost" onclick="addNum(firstnum.value); verifyNum()">
</form>

这是我的 js.cs 文件:

function addNum(n1) 
{
var num1 = parseFloat(n1);
var shipping = 9.99;
finalNum = num1 + shipping;
inputform.btn1.value = finalNum.toFixed(2); //rounds the decimal place to 2!
}
function verifyNum(n1) {
if (isNan(num1.value))
{
alert("Please make sure there's no alphabetical letters.");
return false;
}
}

我把isNan改成了isNaN(n1),KenH是对的。我的问题解决了:)感谢所有评论的人。

实现此工作的一种潜在方法是向输入元素添加一个 ID 值,使其如下所示:

function addNum(n1) {
if (!verifyNum(n1)) {
return false;
}
var num1 = parseFloat(n1);
var shipping = 9.99;
finalNum = num1 + shipping;
document.getElementById("outputDiv").innerHTML = finalNum;
}
function verifyNum(n1) {
if (isNaN(n1)) {
alert("Please make sure there's no alphabetical letters.");
return false;
}
return true;
}
<input name="firstnum" id="inputAmount" size="6" type="text">
<input name="btn2" value="Calculate Cost" onclick="addNum(document.getElementById('inputAmount').value)" type="button">
<div><p id="outputDiv">output will be here</p></div>

我改进了代码片段,以显示如何访问值、测试isNaN和输出值。您拥有的简化版本。

首先,下面的代码onclick="addNum(firstnum.value)"需要更改

将代码更改为 :

function addNum(n1) 
{
**verifyNum(n1);**
//Call the verify function inside addNum, before parseFloat
var num1 = parseFloat(n1);
var shipping = 9.99;
finalNum = num1 + shipping;
inputform.btn1.value = finalNum.toFixed(2); //rounds the decimal place to 2!
}
function verifyNum(n1) {
if (isNaN(n1))  // use the function arg here - isNaN spelling corrected
{
alert("Please make sure there's no alphabetical letters.");
return false;
}
}

将 DOM 元素的函数调用更改为:

onclick="addNum(this.firstnum);"
//There should be one entry point to an event.

最新更新