2010-02-28 81 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