【问题标题】:Is there a way to test the type of content in an element有没有办法测试元素中的内容类型
【发布时间】:2017-11-23 12:03:21
【问题描述】:

我正在尝试使用 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 的情况下测试类型,这样我就可以解析数字,以便正确地对它们进行排序,而不是将它们排序为字符串

【问题讨论】:

  • 你需要Number.isInteger(Number(this.innerHTML.trim()))
  • 您是只检查整数类型还是还包括其他类型的值?
  • @Lalit 我需要检查浮点数、整数和字符串并进行相应的解析,以便排序正常工作
  • 排序时为什么要区分整数和浮点数?
  • @Xufox 如果我将浮点数解析为整数,它会正确解析吗?如果不是,那么排序将不起作用?

标签: javascript jquery typeof


【解决方案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>

【讨论】:

  • 哈哈哈isNaN这就是我要找的,谢谢:)
【解决方案2】:

例如,您可以使用函数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>

【讨论】:

    【解决方案3】:

    在检查isInteger之前使用parseInt

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

    【讨论】:

    • 你的意思是parseFloatNumber
    • 不幸的是,如果您使用 parse int 和 number.isinteger,它会为“2test”之类的东西返回 true
    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 2011-03-20
    • 1970-01-01
    • 2021-06-19
    • 2020-02-23
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多