【发布时间】:2016-05-26 09:05:39
【问题描述】:
我有这个 HTML 数据
<div id="sample">
<p style="text-align: center;">
<span style="font-family: 'comic sans ms', sans-serif; font-size: medium;">
<strong>
word1
<span style="line-height: 1.5;">
word2
</span>
<span style="line-height: 1.5;">
word3
</span>
<span style="line-height: 1.5;">
</span>
</strong>
</span>
</p>
</div>
我想获取 div 元素中的文本。
这是我的 JavaScript 代码:
var text = document.getElementById('sample');
var text_content = jQuery(text).text();
console.debug(text_content);
控制台记录word1 word2 word3。
我要一个字一个字,所以我用split方法:
var text_content_array = text_content.split(" ");
console.debug(text_content_array);
控制台记录["word1 word2 word3"]。字符串未标记化。
我尝试了这段代码,但没有成功:
var text_content_array = text_content.split(" \n\r\t\b\f");
console.debug(text_content_array);
我应该怎么做才能从字符串中得到一个单词数组?
【问题讨论】:
-
您的代码工作正常,拆分返回一个单词数组。检查上面的jsfiddle
-
@Bsienn:您的 JSFiddle 与 OP 的代码非常不同。您使用
text.innerText而不是jQuery(text).text(),这会产生完全不同的结果。而且您还使用了text_content.trim().split(' ')而不是text_content.split(' ')。但是您的版本仍然显示["alyssa ", "enganio ", "gono"],前两个单词后有一个空格 -
@Borodin 我应该清除更多,我很着急。上面的小提琴不是我做的,但它是一个正确的版本。我会解释的。
.text()返回文本加空格和新行,因为它们在代码、缩进等中。因此,拆分不会对包含新行的字符串起作用,trim()也不会。.innerText解决了所有这些问题并仅返回纯文本。然后是魔术.split(' ')和瞧。我们很高兴。 -
@Eliyyahu:我建议你看看What should I do when someone answers my question?
标签: javascript jquery html split