我试图从span标签之间获取价格。我想将所有价格都放在一个数组中。我似乎无法让它工作,我猜我的正则表达式是不正确的。
我正在寻找具有类&#39; amount&#39;的任何span标签,该标签没有设置其他属性且只有一个类。例如。 <span class="amount">£9.99</span>
var prices = resp.fragments['data'].match(/<span class=\"amount\">(.*?)<\/span>/g)
.map(function(val){
return val;
});
输出
[ '£9.99', '£100.00' ]
我试图从span标签之间获取价格。我想将所有价格都放在一个数组中。我似乎无法让它工作,我猜我的正则表达式是不正确的。
我正在寻找具有类&#39; amount&#39;的任何span标签,该标签没有设置其他属性且只有一个类。例如。 <span class="amount">£9.99</span>
var prices = resp.fragments['data'].match(/<span class=\"amount\">(.*?)<\/span>/g)
.map(function(val){
return val;
});
输出
[ '£9.99', '£100.00' ]
*更新*
原来这是一个带有ajax响应resp.fragments['data']
的编码。
我正在使用正则表达式,因为这是我之前在JS中没有真正使用的东西,并且我认为我会有一个游戏。我确实看了很多例子,大约45分钟后没有成功,我认为一套新的眼睛会修复它。
@spaceman 感谢您的帮助评论。你是其中一个人,如果有人问过&#34;家里有医生吗?&#34;,你会站起来说'#34;甜蜜的负荷那里有很多医生和#34;。 / p>
答案 0 :(得分:2)
虽然正则表达式可以解决此问题,但只需选择<span class='amount'>
元素并通过innerHTML
函数将map()
内容映射到数组可能更容易:
// This would yield an array containing your values
var amounts = Array.prototype.slice
.call(document.querySelectorAll('span.amount'))
.map(function(a){ return a.innerHTML; });
答案 1 :(得分:0)
您可以改用它。
<span class='amount'>£123</span>
<span class='amount'>£3</span>
<span class='amount'>£5</span>
<span class='amount'>£64</span>
&#13;
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Sized + Iterator<Item=(A, B)>,
{
struct SizeHint<A>(usize, Option<usize>, marker::PhantomData<A>);
impl<A> Iterator for SizeHint<A> {
type Item = A;
fn next(&mut self) -> Option<A> { None }
fn size_hint(&self) -> (usize, Option<usize>) {
(self.0, self.1)
}
}
let (lo, hi) = self.size_hint();
let mut ts: FromA = Default::default();
let mut us: FromB = Default::default();
ts.extend(SizeHint(lo, hi, marker::PhantomData));
us.extend(SizeHint(lo, hi, marker::PhantomData));
for (t, u) in self {
ts.extend(Some(t));
us.extend(Some(u));
}
(ts, us)
}
&#13;
您不需要使用正则表达式或jQuery。
答案 2 :(得分:0)
最简单的方法是将它添加到一个不可见的DOM对象,然后通过DOM API遍历它
var text = '<span class="amount">£9.99</span><span class="amount">£9.99</span>'
//现在将它附加到DOM对象
var wrapperDiv = "<div style='display:none' id='tmpDiv'>" + text + "</div>";
document.body.innerHTML += wrapperDiv;
var elements = document.querySelectorAll( "#tmpDiv amount" );
var output = Array.prototype.slice.call( elements ).map( function(val){
return val.innerText;
})
另一种方法可以是split
<span class="amount">
文本,并获取第一个索引后的值
<强>样本强>
var text = '<span class="amount">£9.99</span><span class="amount">£9.99</span>'
var output = [];
text.split('<span class="amount">').forEach( function(val, index) {
if (index > 0 )
{
output.push( val.replace( "</span>", "" ) );
}
});
document.body.innerHTML += JSON.stringify( output, 0, 4 );