一个函数中带有 HTML(可选)按钮的 JavaScript 中的 if 表达式

Posted

技术标签:

【中文标题】一个函数中带有 HTML(可选)按钮的 JavaScript 中的 if 表达式【英文标题】:If-expression in JavaScript with HTML (optional) button in one function 【发布时间】:2016-01-26 04:00:19 【问题描述】:

我正在创建一个带有字段的 html 表格,这些字段必须填写,但我想将其中一个字段设为可选。我的代码是这样的:

name.html

...
<table>
    <tr>
    <td>A number:</td>
    <td><input id="numb1" type="text"/></td>
    </tr>
    <tr>
    <td>Anoder number (optional)</td>
    <td><input id="numb2" type="text"></td>
    </tr>
</table>
<input type="button" value="Click" onclick="forfun()"/>
<pre id="result">

Result

</pre>  
 ...

在我的jaava.js 中,我想使用一个 if-else 表达式,定义如果可选字段不为空,那么变量应该取数字的值,写在字段中。

    function forfun() 
    var numberOne=document.getElementById("numb1").value;
    numberOne =parseFloat(numberOne); // numberOne is now really a number
    var numberTwo=document.getElementById("numb2").value;
    numberTwo=parseFloat(numberTwo);
        ...


    if(numberTwo==NaN)  //Here comes the problem, I tried also with 
    //undefined and ==0, but after pressing the button, I become the results
    //of my functions in this loop with result NaN

    numberTwo=2; 
    //and so on
        ...
    
    else 

    //After I fill the second field, everything here is ok 
    

if 后面的括号内应该写什么?你能给我一些想法吗?

【问题讨论】:

试试 if(numberTwo == null || numberTwo == "") 让你成为一个小提琴手:jsfiddle.net/p3xunedL。另外,不要使用表格来布置表单。 谢谢,它适用于这个+parseFloat,不是在if循环之前写的,而是在else循环中:) 【参考方案1】:

NaN 比较总是返回false,所以即使NaN == NaN 也会返回false。而是使用内置的isNaN() 函数:

if (isNaN(numberTwo))  

【讨论】:

==='' 相比更好。 IsNaN 只能用于预期为数字的值。因此Not A Number. 与空字符串比较不会正确处理非空、非数字输入。你是对的,isNaN 应该只用于预期为数字的值,但我想强调他的问题的原因(与 NaN 相比),并提供一种替代方法,但在正确的方式。

以上是关于一个函数中带有 HTML(可选)按钮的 JavaScript 中的 if 表达式的主要内容,如果未能解决你的问题,请参考以下文章

javascript中带有html字符串的concat函数

ASP.NET Web API 中带有可选参数的属性路由

在 xib 中带有可选 UIImageView 的自定义 UITableViewCell

Chocolatey - 在 packages.config 中带有用户确认的可选包

Hibernate中带有命名查询的可选参数?

模板中带有参数的函数。姜戈