只需使用Javascript进行基于标记的突出显示

时间:2010-03-16 22:06:33

标签: javascript ajax

我得到了这个有效的代码:

    <html>

    <head>

    <title>JS highlighting test</title>

    <script type="text/javascript">

    function highlight()
    {
            var t = document.getElementById('highlight').innerHTML;

            t = t.replace(/(if|switch|for|while)\s*(\()/gi, "<b>$1</b>$2");
            document.getElementById('highlight').innerHTML = t;
    }

    </script>

    </head>

    <body onload="javascript:highlight();">

    <pre id="highlight">
    1  if(foo) {
    2          bar();
    3  }
    4
    3  while(--baz) {
    5          oof();
    6  }
    </pre>

    </body>

    </html>

我想为所有<pre>标签而不是只有一些具有特定和标签的标签 独特的ID,因为它现在有效。最好的方法是组合一个特定的标签 具有特定ID。是否可以扩展上面的小JS函数来实现这一点 方式(使用一些document.getElementsByTag(tag).getElementsById(id).innerHTML或 在循环中类似的东西(我不知道究竟是什么能够满足需要)?我试过自己,但没有取得真正的成功。我只需要尽可能简单的解决方案,没有什么特别的。

感谢您的想法。

-
NKD

1 个答案:

答案 0 :(得分:2)

你几乎猜对了; - )

function doSomethingWithAllPres() { 
    var pres = document.getElementsByTagName("pre");
    for (var i = 0; i < pres.length; i++) { 
        // you can check the class name via pres[i].className === "highlight"
        // (and you should use a class instead of an id therefore)
        if (pres[i].className.indexOf("highlight") >= 0) {
            // action goes here
        }
    }
}

使用像jQuery这样的JS-Framework,事情会更简单:

$("pre.highlight").each(function(i) {
    // action goes here
});

然而,使用框架可能有点过分......