2016-12-09 16 views
0

値が数値かどうかをチェックする方法。数値の場合はテキストセンターを表示し、それ以外の場合はテキストを表示します。私は私の声明に何が間違っているかを知りたい。値が数値かどうかを確認する方法

あなたが typeofを使用

for (var l = 0; l < Object.keys(pods[i].data.summaryDetailedData).length; l++) { 
 
         contentHtml += "<tr>"; 
 

 
         for (var m = 0; m < pods[i].data.columns.length; m++) { 
 

 
          for (var field in pods[i].data.summaryDetailedData[l]) { 
 
           var rowspan = (pods[i].data.summaryDetailedData[l].children !== undefined ? pods[i].data.summaryDetailedData[l].children.length : ""); 
 
           rowspanMax = Math.max(rowspanMax, rowspan); 
 

 
           if (field === pods[i].data.columns[m]) { 
 

 
            var preFix = pods[i].data.summaryDetailedData[l]["sPrefix"] !== undefined ? pods[i].data.summaryDetailedData[l]["sPrefix"] : ""; 
 
            var postFix = pods[i].data.summaryDetailedData[l]["sPostfix"] !== undefined ? pods[i].data.summaryDetailedData[l]["sPostfix"] : ""; 
 
            var value = pods[i].data.summaryDetailedData[l][field]; 
 
            if (value.toString().substr(0, 3) == "- 1") { 
 
             value = "N/A"; 
 
            } 
 
            var color = pods[i].data.summaryDetailedData[l][field + "_color"]; 
 
            if (colName[m] === "sLabel" && pods[i].data.summaryDetailedData[l].bStepThrough == true) { 
 
             value = "<a href=\"#\" class=\"stepthrough\">" + value + "</a>"; 
 
            } 
 
            color = color !== "" && color !== undefined ? " <span class=\"color\" style=\"background: #" + color + "\"></span>" : " <span class=\"color\"></span>"; 
 
            contentHtml += "<td rowspan1=\"" + 1 + "\" class=\"" + (rowspan !== "" && rowspan > 1 ? "groups" : "") + " " + (!isNaN(value) || (!isNaN(value.toString().substr(1, value.length)) || value == "N/A" || typeof value == Number) ? "text-center" : "text-left") + "\">" + value + (Number(value) ? preFix : "") + color + (!isNaN(value) ? postFix : "") + "</td>"; 
 
            if (rowspan > 1) { 
 
             var rowspanContent = "<td rowspa1=\"" + rowspan + "\" class=\"" + (rowspan !== "" && rowspan > 1 ? "groups" : "") + " " + (!isNaN(value) || (!isNaN(value.toString().substr(1, value.length)) || value == "N/A" || typeof value == Number) ? "text-center" : "text-left") + "\">" + value + (Number(value) ? preFix : "") + color + (!isNaN(value) ? postFix : "") + "</td>"; 
 
            } 
 

 
            if (field === "sLabel") { 
 
             for (var child in pods[i].data.summaryDetailedData[l].children) { 
 

 
              if (child > 0 && rowspan >= 2) { 
 
               contentHtml += "</tr>"; 
 
               contentHtml += "<tr>"; 
 
               contentHtml += rowspanContent; 
 
              }

+0

typeof演算値=== '数' は –

+0

'typeof演算値は===「number''(引用符を忘れてしまった!) – gyre

+0

別の方法は、のparseIntメソッド –

答えて

1

toFixedメソッドを使用して

var ff=1.222; console.log(typeof ff) // number 
(typeof ff == "number") // true 
var ff="1.222"; console.log(typeof ff) // string 
(typeof ff == "number") // false 

OR

、変数が数値でない場合、それは、そうでない場合は、undefinedを返します。番号オブジェクトは関数deそのプロトタイプに罰金が科せられるので、関数toFixedを返すので、それは数字です。

(これは、ハッキングの一種であるが、それは効率的であり、最小コスト)

contentHtml += "<td class=\"" 
    + (value.toFixed) ? "text-center" : "text-left" + "\">") 
    + value + (value.toFixed) ? preFix : "" 
    + color + (value.toFixed) ? postFix : "" + "</td>"; 
+0

私のコードを変更しました。コードは最初はすべてを文字列に変換するため、結果はどのように取得するのですか –

0

Number.isFinite(値)を使用しては:

contentHtml += "<td class=\"" + (Number.isFinite(value) ? "text-center" : "text-left" + "\">") + value + (Number.isFinite(value) ? preFix : "") + color + (Number.isFinite(value) ? postFix : "") + "</td>"; 
+0

自分のコードを変更しました。自分のコードの結果を取得する方法は、最初はすべてを文字列に変換するためです –

0

これは現在jQuery 3.0で使用されているチェック:

function isNumeric(obj){ 
    // As of jQuery 3.0, isNumeric is limited to 
    // strings and numbers (primitives or objects) 
    // that can be coerced to finite numbers (gh-2662) 
    var type = jQuery.type(obj); 
    return (type === "number" || type === "string") && 
     // parseFloat NaNs numeric-cast false positives ("") 
     // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 
     // subtraction forces infinities to NaN 
     !isNaN(obj - parseFloat(obj)); 
} 

とにかくjQueryを使用する場合は、組み込みのisNumeric()機能を使用しないでください。

関連する問題