【问题标题】:Replace all characters after the 10th inside specific tag替换特定标签内第 10 位之后的所有字符
【发布时间】: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 未定义。我如何让它发挥作用?

感谢所有帮助!

【问题讨论】:

    标签: regex replace 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 是我提供的。你应该避免混合和匹配。
    猜你喜欢
    • 2016-01-14
    • 2011-09-07
    • 2015-04-29
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2014-05-08
    相关资源
    最近更新 更多