有没有办法测试元素中的内容类型

时间:2017-11-23 12:03:22

标签: javascript jquery typeof

我正在尝试使用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>
&#13;
&#13;
&#13;

有没有办法在不使用typeof的情况下测试类型,这样我就可以解析数字,这样我就可以正确地对它们进行排序,而不是将它们排序为字符串

3 个答案:

答案 0 :(得分:1)

这是typeof的检查功能:

$('.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>

答案 1 :(得分:1)

例如,您可以使用函数isNaN来检查文本(它还接受字符串)是否不是数字。如果数字为parseFloat+,则表示您要将变量解析为所需类型。

$('.test').each(function() {
    var text = $(this).text();
    if(!isNaN(text))
    	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>

答案 2 :(得分:-1)

在检查parseInt之前使用isInteger

&#13;
&#13;
$('.test').each(function() {
     console.log(Number.isInteger(parseInt(this.innerHTML.trim())))
});
&#13;
<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>
&#13;
&#13;
&#13;