替换特定标签内第 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 位之后的所有字符的主要内容,如果未能解决你的问题,请参考以下文章

禁用特定标签栏项目排序的最佳方法

正则表达式排除特定字符串

如何多次替换两个分隔符/字符串之间的唯一字符串

如何打印字符串以替换无监督学习中的标签值

仅当字符串包含匹配项时才替换字符串周围的标签

如何在 Xcode10 Ui 测试中点击标签的特定单词?