2014-01-31 73 views
0

我有以下JavaScript代码旨在从网页中提取某些文本。提取文本<span>类

document.getElementById('availability').innerHTML 

问题是它也提取了跨度代码。这是输出,我得到

<span class="a-size-medium a-color-success"> 

     Only 14 left in stock. 




</span> 

但是什么其实我是想提取是

Only 14 left in stock. 

这是网页即时试图关闭提取数据的部分源代码。

<div id="availability" class="a-section a-spacing-none"> 
<span class="a-size-medium a-color-success">  
     Only 14 left in stock.   
</span></div> 

我知道我可以操纵提取的数据来得到我想要的结果。不过,我想知道如果任何方式通过JavaScript代码我可以实现这一目标?在此先感谢您的帮助

+0

灒确实是这样的:HTTPS: //github.com/jquery/sizzle/blob/master/src/sizzle.js#L918。乍一看,你可以使用'getText'函数。你可以使用getText(elem){'替换'getText = Sizzle.getText = function(elem){'。 – leaf

+0

如果您希望使用jQuery而不是'$('#availibility span')。text()'将为您完成这项工作 –

+0

jQuery使用Sizzle'getText',挑选函数避免加载整个库:) – leaf

回答

4

假设<span>是空<div>唯一的孩子:

var el = document.getElementById('availability'); 
var text = el.innerText || el.textContent; 
1

你应该在这个年龄段可以使用jQuery。 但是,您仍然可以使用innerHTML属性。

document.getElementById('availability').innerText 
+1

哪个在Firefox中不受支持。 *“你应该在这个年龄段使用Jquery。”*你应该知道比提供这样的建议更好。 –

+0

完美地工作。使用Applescript处理日期,因此需要javascript。非常感谢 – kype

+0

@FelixKling谢谢你指出。@ kype记住Felix的评论我会建议这不是一个完整的答案。我可以修改,但是我认为Alex K.给出了更好的答案。 – DhruvJoshi

-2

假设是对第一个孩子:

document.getElementById('availability').firstChild().innerHTML(); 

请参阅jsfiddle

+2

'.firstChild'和'.innerHTML'不是函数。 –

+0

@FelixKling:请参阅http://jsfiddle.net/UXu25/,至少在Firefox中工作,不知道其他浏览器。 – Ankit

+0

@Ankit我检查过了,它在你的小提琴上不起作用。就像FelixKling所说的,它们是属性而不是方法,参见规范 - http://www.w3.org/TR/DOM-Level-2-Core/core。html#ID-169727388 –

0

我觉得这里最好的办法是使用jQuery。

$('#availability').text().trim(); 

如果你真的需要使用纯JavaScript,然后你需要使用大多数浏览器:

document.getElementById('availability').innerText 

,并为Firefox:

document.getElementById('availability').textContent