我正在尝试使用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;
有没有办法在不使用typeof
的情况下测试类型,这样我就可以解析数字,这样我就可以正确地对它们进行排序,而不是将它们排序为字符串
答案 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
。
$('.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;