2012-03-17 1 views
0

Я получил этот JQuery скриптКак остановить отображение NaN в результатах?

$(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 в результате, возможно ли это?

+0

Если вы всегда хотите результатов, вы также можете префикс ваших числовых переменных с помощью '>>> 0', что приводит к неправильным номерам в 0. Побочный эффект: диапазон номера будет' [0, 4294967295] '. –

ответ

4

и может сделать тест с помощью этой функции IsNaN()

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

console.log(myNumber); // return 0 

EDIT: реализация для тестирования несколько значений:

(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])); 
+0

Я добавил - if (isNaN (target, context, broder, margin, padding)) myNumber = 0; console.log (myNumber); // return 0 }); в нижней части моего кода, и он не работает. Я уверен, что я сделал что-то по ошибке здесь: S –

+0

Сэр Лхассан У меня вопрос, как я могу использовать isNan в нескольких значениях? –

+0

Привет, Сама, см. Раздел EDIT в моем ответе. –