Подсветка на основе тегов с помощью Javascript - PullRequest
1 голос
/ 17 марта 2010

Я получил этот код, который работает:

<code>    <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> тегов вместо одного с некоторыми конкретными и уникальный идентификатор, как он работает сейчас. Лучше всего было бы иметь комбинацию определенного тега с конкретным идентификатором. Можно ли расширить маленькую функцию JS выше, чтобы работать способ (используя некоторые document.getElementsByTag(tag).getElementsById(id).innerHTML или что-то похожее (я не знаю, что именно соответствует потребности) в цикле? Я попробовал себя, но без особого успеха. Мне нужно только как можно более простое решение, ничего особенного.

Спасибо за ваши идеи.

-
NKD

1 Ответ

2 голосов
/ 17 марта 2010

Вы почти угадали; -)

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
        }
    }
}

Используя JS-Framework, такой как jQuery, все будет еще проще:

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

Однако использование фреймворка может быть излишним ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...