2010-02-28 68 views
4

假設我有以下HTML:CSS/JavaScript的:獲取元素的用戶可見的文本

<div id="test"> 
    <span style="display:inline;">foo</span> 
    <span style="display:none;">bar</span> 
    <span style="display:inline;">baz</span> 
</div> 

..有在JavaScript某種方式對我來說,得到輸出「富巴茲」(而不是「 foo bar baz「)?

$('test').textContent返回後者,並且innerHTML做相同。

我根本不在乎使用的方法是駭人還是迂迴,如果它是瀏覽器特定的或需要Flash,可以處理它。

但是,除了JS或Flash之外,它不能要求任何其他任何用戶交互,也不能返回'bar'。

想法?

回答

4

你可以這樣做,但要注意它不會有像你的榜樣的空間,因爲在標記沒有空間:

$("#test :visible").text() 

這裏有一個選擇,就像你的例子爲每個跨度間隔開:

var s = new Array(); 
$("#test :visible").each(function() { 
    s.push($(this).text()); 
}); 
alert(s.join(' ')); 
+0

這正是我想要的。完善。 我不需要添加數組,因爲我可以在每個錨標記文本的內部添加一個空格。 有一點需要注意:你的方法需要jQuery。 – Sai 2010-02-28 14:51:41

+0

PS已實施並感謝:http://cssfingerprint.com :) 在Safari中,此方法比我以前的方法快4倍。在Firefox中,這不是一個改進。還是值得的。謝謝! – Sai 2010-02-28 17:57:52