我有一个像这样的元素
<span class='h310'>blah</span>
现在
console.log($(this).attr('class'));
呈现
"h310"
但
console.log(parseInt($(this).attr('class')));
呈现NaN
而不是非常需要310
。
我在这里缺少什么以及如何解决这个问题?
更新
h
确实是静态的,我只是添加它,因为根据HTML规范,“310”不是有效的类名,而“h310”是。
答案 0 :(得分:3)
答案 1 :(得分:1)
parseInt
方法在此处不起作用。
试试这个(“h”是静态的)
<span id="sp1" class='h310'>blah</span>
$(document).ready(function(){
alert($('#sp1').attr('class'));
alert(parseInt($('#sp1').attr('class').replace('h', ''),10));
});
对于一般解决方案,请使用正则表达式。
console.log(parseInt($('#sp1').attr('class').match(/\d+/),10));
直播DEMO
答案 2 :(得分:1)
您需要先提取字符串的数字部分。只有在字符串
的开头没有非数字字符时,parseInt才会自动提取它var numberpart = $(this).attr('class').substring(1);
console.log(parseInt(numberpart, 10)); // make sure to provide the radix 10 for decimal numbers
答案 3 :(得分:1)
是的,显然它会返回NaN,因为parseInt方法不能用于字符串中的最后一个数字但是如果你有310h
那么它可以用parseInt解析:
所以,在这里使用正则表达式:
console.log(parseInt($('span').attr('class').match(/\d+/),10));
作为@James你也可以这样使用:
$(this).attr('class').replace(/[a-zA-Z ]/g, '');
答案 4 :(得分:0)
试试这个
var str= $('span').attr('class');
var thenum = str.replace( /^\D+/g, '');
console.log(thenum)