麻烦在MyBB中交替显示文本颜色

时间:2013-10-28 06:29:02

标签: javascript mybb

我正在尝试为我的用户组标题替换文字颜色并遇到一些麻烦。我正在使用它,但由于某种原因它没有正常工作。它只会出现在一个地方而且没有其他地方可以正常工作,它也会切断用户名的最后一个字母。

这是javascript:

    window.onload=function(){
var HTML = '';

function alternate(colorpair) {
    var el = document.getElementById('alternator');
    if (!HTML) HTML = el.innerHTML;
    var text = HTML.match(/\S\s*(?=\S)/g), output = '';
    for (var w=0; w<text.length; w++) {
        output += '<span style="color:' + ((w%2) ? colorpair[0] : colorpair[1]);
        output += ';">' + text[w] + '</span>';
    }
    console.log(output);
    el.innerHTML = output;
}
alternate(['green', 'purple']);

这是用户组标记

<span id="alternator" class="none">{username}.</span>

1 个答案:

答案 0 :(得分:0)

您使用的是id,但ID必须在文档中是唯一的。使用课程getElementsByClassName。 (你不试图在任何地方循环元素,那么为什么这会多次运行?)

由于你的正则表达式,它会删除最后一个字母:(?=\S)表示“下一步必须有一些非空格”,所以在正则表达式外面总会有一个字母 ,你只保留正则表达式匹配的位。

我对外var HTML的使用感到困惑;这不是必要的,可能会在第一个之后破坏标题。

最后,并不是说我是设计师或其他任何东西,但我很确定交替的绿色和紫色字母看起来会很糟糕。 :)