【发布时间】:2011-10-25 09:20:11
【问题描述】:
我在 javascript 中有一个元素,如下所示:
<span>280ms</span>
我想从 span 元素中提取 280。我该怎么做? span 元素中的内容可以是任意数字,后跟 ms。
【问题讨论】:
-
类似问题,best answer
标签: javascript jquery
我在 javascript 中有一个元素,如下所示:
<span>280ms</span>
我想从 span 元素中提取 280。我该怎么做? span 元素中的内容可以是任意数字,后跟 ms。
【问题讨论】:
标签: javascript jquery
parseInt() 很可爱。
HTML
<span id="foo">280ms</span>
JS
var text = $('#foo').text();
var number = parseInt(text, 10);
alert(number);
parseInt() 会将任何字符串作为数字处理,并在到达非数字字符时停止。在这种情况下,m 位于 280ms 中。在找到数字 2、8 和 0 后,将这些数字评估为以 10 为底(第二个参数)并返回数值 280。请注意,这是一个实际数字,而不是字符串。
编辑:
@Alex Wayne 的评论。
只需先过滤掉非数字字符即可。
parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);
【讨论】:
parseInt 中的 10 参数是可选的,但您应该使用它来防止将数字意外解析为八进制。如果 span 包含“0700ms”,则结果不会返回 700,而是 448!
parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);
parseInt() 将不起作用,就像在 cmets 中已经指出的那样。
试试这个:
var num = document.getElementById('spanID').innerText.match(/\d+/)[0];
jQuery 版本:
var num = $('span').text().match(/\d+/)[0]; // or $('#spanID') to get to the span
如果你想作为数值(而不是字符串),使用 parseInt:
var num = parseInt($('span').text().match(/\d+/)[0], 10);
【讨论】:
parseInt(),你不需要regex匹配。不过,感谢提供 radix 参数。
试试下面的
var strValue = // get 280m from the span
var intValue = parseInt(strValue.match(/[0-9]+/)[0], 10);
【讨论】:
你可以使用parseInt()函数
var number = parseInt($("span").text())
【讨论】:
radix 参数提供给parseInt()。
更改跨度:
<span id='msSpan'>280ms</span>
那么你可以这样做:
alert($('#msSpan').text());
【讨论】:
它总是以“ms”结尾吗?你可以这样做:
var num = s.substring(0, s.length-2)
其中 s 是跨度中的字符串。要获取此值,您可以在 span 上使用 text()、html() 或 innerHTML。
【讨论】:
一般来说数字没有负数或正数
<div>
blah blah
<span>285blahblah</span>
</div>
var html= document.getElementsByTagName('div')[0].innerHTML;// or $('div').html() if jquery
var number = parseFloat(html.match(/-*[0-9]+/));
【讨论】:
var myNumber= $('span').text().replace(/[^d.,]+/,'');
【讨论】:
使用 jquery 非常简单。可能更好地给跨度一个 id
var mytext=replace($('span').text(),"ms","");
编辑删除 ms
【讨论】:
.text() 的数字部分