【问题标题】:how do I stop NaN being displayed in the results?如何阻止 NaN 显示在结果中?
【发布时间】:2012-04-02 16:05:17
【问题描述】:

我有这个 jquery 脚本

 $(document).ready(function() {
   $(function(){
    $("#result").submit(function(e) {
       e.preventDefault();
       var ele = $("#element").val(),
        target = $("#target").val(),
        context = $("#context").val(),
        border = $("#border").val(),
        margin = $("#margin").val(),
        padding = $("#padding").val();

    console.log(ele, target, context, border, margin, padding);

    var DoubleMargin = parseInt(margin, 10) * 2;
    var DoublePadding = parseInt(padding, 10) * 2;
    var DoubleBorder = parseInt(border, 10) * 2;


    var ActualTarget = parseInt(target, 10) - parseInt(DoubleBorder, 10) - parseInt(DoubleMargin, 10) - parseInt(DoublePadding, 10) * 1;
    var result3 = parseInt(target, 10) - parseInt(DoubleMargin, 10) * 1;
    var MarginResult = parseInt(margin, 10) / parseInt(target, 10) * 100;
    var PaddingResult = parseInt(padding, 10) / parseInt(target, 10) * 100;
    var OriginalResult = parseInt(ActualTarget, 10) / parseInt(context, 10) * 100;
    var BorderResult = parseInt(target, 10) - parseInt(border, 10) * 1;

    //$(".result").append(ele + " " + result + "%");
    $("<p></p>", {
        html: ele + " {<br><span>width: " + OriginalResult + "%;" + " /* " + ActualTarget + " (originally " + target + ") / " + context + " */ " + "<br>border: " + border + "px; " + "<br>margin: " + MarginResult + "%; " + "<br>padding: " + PaddingResult+ "%;" + "<br> </span>}"
    }).hide().appendTo("#code-results").fadeIn();
   });

}); 

});

但是当有人根本不输入数字时,我会在结果中得到 NaN?如何使用此代码摆脱它?另外我希望 0 仍然显示为 0 这可能吗?

编辑:实际上,当有人不输入数字而不是 NaN 时,我会得到 0 作为结果,这可能吗?

【问题讨论】:

  • 如果你总是想要结果,你也可以在你的数字变量前加上&gt;&gt;&gt; 0,这会将无效数字变成0。副作用:数字的范围将是[0, 4294967295]

标签: jquery nan


【解决方案1】:

你可以使用这个函数isNaN()进行测试

var myNumber = 'hello';
if (isNaN(myNumber)) 
    myNumber = 0;

console.log(myNumber); // return 0

编辑:测试多个值的实现:

(function(global, $) {
    function isNan(valuesOrg) {
        values = $.isArray(valuesOrg) ? valuesOrg : [valuesOrg];
        results = values.map(function(value) {
            return isNaN(value);
        });

        if (!$.isArray(valuesOrg)) {
            return results[0];
        }

        return results;
    }

    global.myIsNane = isNan;
})(window, jQuery);

console.info(myIsNane('gh'));
console.info(myIsNane(90));
console.info(myIsNane(['oo', 00, 'bb', 84]));

【讨论】:

  • 我添加了 - if (isNaN(target, context, broder, margin, padding)) myNumber = 0; console.log(myNumber); // 返回 0 });到我的代码的底部,它不起作用。我确定我在这里做错了什么:S
  • 拉桑爵士我有一个问题,如何在多个值中使用 isNan?
  • 嗨,Sama,请参阅我回答中的编辑部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 2015-03-06
  • 2014-06-26
相关资源
最近更新 更多