替换特定标签内第 10 位之后的所有字符
Posted
技术标签:
【中文标题】替换特定标签内第 10 位之后的所有字符【英文标题】:Replace all characters after the 10th inside specific tag 【发布时间】:2012-02-08 00:21:09 【问题描述】:我想我掌握了这个脚本的基础知识,但无法确定它为什么不起作用。我有一个动态的锚。由于我的设计参数,如果它超过 10 个字符,它会被截断,所以我想在第 10 个字符之后用 hellip 截断它。我为它写了正则表达式,但需要暗示它。这是我的代码:
$(function()
var crumb = $('#breadcrumb > li > ul > li > a:first');
console.log(crumb)
crumb.innerhtml.replace(/^([\d\w\s]10).*?/,'$1…');
console.log(crumb)
)
忽略 console.log 行,因为它们是 firebug 脚本。出于某种原因,我的调试器第一次正确返回 crumbs,但第二次返回 crumbs.innerHTML 未定义。我如何让它发挥作用?
感谢所有帮助!
【问题讨论】:
【参考方案1】:无需使用正则表达式。
既然您已经拥有innerHTML
,请使用 String 方法和属性。
if (crumb.innerHTML.length > 10)
crumb.innerHTML = crumb.innerHTML.substr(0, 10) + '…';
更新
查看JSFiddle 的实际示例
注意:如果innerHTML
有HTML 标记,此解决方案将不起作用。那就是我假设你的锚标签中只有文本。
【讨论】:
好的,所以 iv 稍微修改了你的代码以使其正常工作,这就是我所拥有的: $(function() var crumb = $('#breadcrumb > li > ul > li > a:first ').html(); console.log(crumb) if (crumb.length > 10) crumb = crumb.substr(0, 10) + '…'; // crumb.replace(/^([\ d\w\s]10).*?/,'$1…'); console.log(crumb) ) firebug 正确返回它,但由于某种原因实际上并没有改变我的页面。 查看我的更新。您的示例混合了香草 javascript,我假设是 jQuery。这可能是你的问题。告诉我,我可以调整代码。 是的,它确实有点混合,运行了很多库。它正在替换变量的内容,但现在我需要用我的变量替换: $('#breadcrumb > li > ul > li > a:first').html() 中的内容。类似于: crumb.html() = crumb;虽然看起来不太对... 试试crumb.html(new_string);
其中 new_string 是我提供的。你应该避免混合和匹配。以上是关于替换特定标签内第 10 位之后的所有字符的主要内容,如果未能解决你的问题,请参考以下文章