2017-11-23 11 views
1

javascript/jqueryを使用して要素のコンテンツの種類をテストしようとしていますが、要素からコンテンツを取得するたびに常に文字列として返されます:要素のコンテンツの種類をテストする方法はありますか?

$('.test').each(function() { 
 
    console.log(
 
     this.innerHTML.trim(), 
 
     typeof this.innerHTML, 
 
     typeof $(this).text(), 
 
     $.type(this.innerHTML.trim()), 
 
     Number.isInteger(Number(this.innerHTML.trim())) 
 
    ); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div> 
 
<div class="test"> 
 
2test 
 
</div>

私はきちんと彼らに並べ替えを行うことができますので、私は数字を解析できるようにtypeofを使用して、というよりも、文字列

としてそれらを分類することなく、タイプをテストする方法はあります
+1

あなたは '' Number.isIntegerを(数(this.innerHTML.trim()))が必要です。 – Xufox

+0

整数型のみをチェックしているのですか、それとも他の型の値も含んでいますか? – Lalit

+0

@Lalit浮動小数点、整数、文字列をチェックし、それに応じて解析して、ソートが正しく動作するようにする必要があります。 – Pete

答えて

1

これはtypeof演算のためのチェックFUNCです:

あなたは、例えば、テキストかどうかを確認するための機能 isNaNを使用することができます

$('.test').each(function() { 
 
    
 
    var checktype = isNaN(this.innerHTML) 
 
    if (checktype == false) { alert("number"); return;} 
 
    else { 
 
    
 
    alert(typeof this.innerHTML) 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234c 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div>

+0

ハハの '​​isNaN'はこれが私が探していたものです。ありがとう:) – Pete

+0

あなたは正しく、evalは必要ありません。いつかevalはいい仕事をすることができます... –

-1

チェック前にparseIntを使用してください。isInteger

$('.test').each(function() { 
 
    console.log(Number.isInteger(parseInt(this.innerHTML.trim()))) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div>

+0

あなたは 'parseFloat'または' Number'を意味します。 – Xufox

+1

残念なことにparse intとnumber.isintegerを使用すると、 "2test"のようなものに対してはtrueを返します – Pete

1

(それはまた、文字列を受け付けます)数字ではありません。数値がparseFloatまたは+の場合は、変数を目的のタイプに解析します。

$('.test').each(function() { 
 
    var text = $(this).text(); 
 
    if(!isNaN(text)) 
 
    \t text = +text; 
 
    console.log(text + " " + typeof text); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div> 
 
<div class="test"> 
 
normalText 
 
</div>

関連する問題