截断javascript中不包括html元素的文本
truncating text in javascript excluding html elements
我使用以下函数截断旁边有"read more"
按钮的文本。
truncateText: function (string, targetCharacterLength) {
var length = string.length;
if (length < targetCharacterLength) {
return (string)
} else {
var shortenedString = string.slice(0, targetCharacterLength);
shortenedString = shortenedString.slice(0,shortenedString.lastIndexOf(' ')) + '... ';
return shortenedString
}
}
所以我遇到的问题是文本中的< a >
标记。如果它在"read more"
按钮之前启动,则该按钮的功能将中断。
这是当我检查文本上< a >
标签在"..."
之前开始的元素时看到的
< a... < a="" href="#" class="more" > Read More < /a...>
有人知道我该怎么解决这个问题吗?我不能使用插件。
感谢
您必须在输入字符串中找到锚块的</a>
的最后一个索引。您可以使用.lastIndexOf()JavaScriptApi来完成此操作。
试试FIDDLE,这里我给出了一个带有锚标记的文本。代码找到了标记体</a>
的末尾。
这是一个粗略的例子,所以我认为需要对使用/a>
以外的字符串进行审查。
我已经更新了如下的功能
function truncateText(string, targetCharacterLength) {
var length = string.length;
if (length < targetCharacterLength) {
return (string)
} else {
var shortenedString = string.slice(0, targetCharacterLength);
var tempshortenedString = shortenedString.slice(0, shortenedString.lastIndexOf(' '));
var lastMarkupBegin = -1;
var lastMarkupEnds = -1;
try {
lastMarkupBegin = tempshortenedString.lastIndexOf("<a");
lastMarkupEnds = tempshortenedString.lastIndexOf("/a>");
} catch (err) {}
//alert(lastMarkupEnds);
if (lastMarkupBegin != -1) { // has an opening anchor tag
if (lastMarkupEnds == -1) { // not having an closing tag
tempshortenedString = tempshortenedString.slice(0, lastMarkupBegin);
//alert(tempshortenedString);
return tempshortenedString + '... ';
}
}
return shortenedString + '... '
}
希望它对你有效
相关文章:
- 识别切换条元素文本并在量角器中单击它
- 数组函数不适用于从元素文本创建的JavaScript数组
- 将元素文本替换为子项中的值
- 如何在不丢失格式的情况下连续淡入() 元素文本的每个字符,包括嵌套元素
- 使用 jQuery 从目标页面而不是当前页面获取元素文本
- 使用jquery为html元素文本的每个字符设置动画
- regex替换元素文本
- 在 Firefox 中单击鼠标时无法选择所有输入元素文本
- 如何确定 HTML 元素文本中“新行”的位置
- 在量角器中将元素文本转换为对象
- 无法使用 jquery 获取 xml 元素文本值
- jQuery - 仅获取父元素文本,而不获取子元素文本
- 单击其他元素(文本输入)时显示下拉列表
- 使用自定义绑定更新元素文本
- Android驱动程序的scrollTo和scrollToExact 方法的问题.方法不会滚动到所需的元素文本,而是滚动
- 选择元素文本并添加逗号
- 获取不带 html 标记的页面元素文本,但保留换行符
- 删除元素文本中的最后一个字符
- 如何按顺序获取所有元素文本
- 使用AngularJS将元素文本复制到title属性的干净方法