【问题标题】:Javascript variable displaying NaN显示 NaN 的 Javascript 变量
【发布时间】:2016-03-13 12:53:19
【问题描述】:

谁能告诉我如何让我的最终变量显示为数字(我的函数变量的值)而不是 NaN?

<form id="computeroi">
                <fieldset>
                    <div class="col-1 pblue"> <p class="float-left"> 1. How many monthly visitors does your website get per month? </p>  <input type="number" value="0" id="monthlyvisitors" class="width-50" onchange="computeroi()"> </div>
                    <div class="col-1 pblue"> <p class="float-left"> 2. How many of those visitors are from a mobile device? </p>  <input type="number" value="0" id="mobilevisitors" class="width-50" onchange="computeroi()"> </div>
                    <div class="col-1 pblue"> <p class="float-left"> 3. What is your average deal worth ? </p>  <input type="number" value="0" id="dealworth" class="width-50" onchange="computeroi()"> </div>
                    <div class="col-1 pblue"> <input type="submit" value="Submit" class="width-25" id="submit" width="25"> </div>
                    <div class="col-1 "> <h1 id="newdealw"> </h1> </div>
                </fieldset>
            </form>

function computeroi() {
var monthlyv = document.getElementById('monthlyvisitors').value;
var mobilet = document.getElementById('mobilevisitors').value;
var dealw = document.getElementById('dealworth').value;

var newdeals = (mobilevisitors / monthlyvisitors); 
var newdealw = (newdeals * dealworth);

document.getElementById('newdealw').innerHTML = newdealw;

}

【问题讨论】:

  • 您的代码声明了变量monthlyvmobilet,然后在数学中继续使用mobilevisitorsmonthlyvisitors。这些变量没有定义,所以你得到NaN
  • 错误在这里 var newdeals = (mobilet /monthlyv); var newdealw = (newdeal * dealw);

标签: javascript parsing variables numbers integer


【解决方案1】:

mobilevisitors,monthlyvisitors,dealworth 未在您的方法中的任何位置声明或定义。

而不是将您的 ID 分配值 monthlyvisitors,mobilevisitors,dealworth 转换为 monthlyv ,mobilet ,dealw

var monthlyv = document.getElementById('monthlyvisitors').value;
var mobilet = document.getElementById('mobilevisitors').value;
var dealw = document.getElementById('dealworth').value;

这样试试

var monthlyv = document.getElementById('monthlyvisitors').value;
var mobilet = document.getElementById('mobilevisitors').value;
var dealw = document.getElementById('dealworth').value;

var newdeals = ( +mobilet / +monthlyv ); 
var newdealw = (newdeals * +dealw );

N:b: 变量前的+ 符号会将其视为数字。

【讨论】:

  • 很好的反应,伙计们立即解决了这个问题,我的愚蠢疏忽! var newdeals = (3 / 100 (* 每月v));我实际上需要数学来完成上述操作,但这行不通
【解决方案2】:
var monthlyv = document.getElementById('monthlyvisitors').value;
var mobilet = document.getElementById('mobilevisitors').value;
var dealw = document.getElementById('dealworth').value;

var newdeals = (mobilevisitors / monthlyvisitors); 
var newdealw = (newdeals * dealworth);

您的代码中没有 mobilevisitors ,monthlyvisitors 变量。

在执行数学运算之前也相应地使用parseInt()parseFloat() 以确保安全。

【讨论】:

    【解决方案3】:

    您的代码中没有 mobilevisitors 、monthlyvisitors 变量。 只需像这样更改最后两行:

    var newdeals = (mobilet / monthlyv); 
    var newdealw = (newdeals * dealw);
    

    【讨论】:

      【解决方案4】:

      您没有声明变量mobilevisitors 或这个monthlyvisitors,因此您无法获得价值。您应该使用变量monthlyv 和mobilet 来获取这两个东西(mobilevisitors 和monthlyvisitors)的价值

      【讨论】:

        猜你喜欢
        • 2014-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-30
        • 2012-04-22
        • 1970-01-01
        相关资源
        最近更新 更多