Как сделать так, чтобы конкретные слова превращались в разные цвета? - PullRequest
1 голос
/ 03 марта 2012

Мне интересно, как сделать так, чтобы разные слова превращались в разные цвета на моей веб-странице. EG: «This» станет красным, а «box» станет синим.

Пока у меня есть это:

    <div class="scroll">
          <p class="margin">This box should scroll when it runs out of space.This box should                    scroll when it      runs out of space.This box should scroll when it runs                   out of space.This box should scroll when it runs        out of                  space.This box should scroll when it runs out of space.This box should scroll                   when it runs out        of space.This box should scroll when it runs                    out of space.This box should scroll when it runs out of                 space.This box should scroll when it runs out of space.This box should scroll                   when it runs out of         space.This box should scroll when it runs out                   of space.This box should scroll when it runs out of         space.This box                  should scroll when it runs out of space.This box should scroll when it runs out                 of      space.This box should scroll when it runs out of space.This box                 should scroll when it runs out of       space.This box should scroll                    when it runs out of space.This box should scroll when it runs out of                    space.This box should scroll when it runs out of space.This box should scroll                   when it runs out of         space.This box should scroll when it runs out                   of space.This box should scroll when it runs out of         space.This box                  should scroll when it runs out of space.This box should scroll when it runs out                 of      space.This box should scroll when it runs out of space.This box                 should scroll when it runs out of       space.This box should scroll                    when it runs out of space.This box should scroll when it runs out of                    space.This box should scroll when it runs out of space.This box should scroll                   when it runs out of         space.This box should scroll when it runs out                   of space.This box should scroll when it runs out of         space.This box                  should scroll when it runs out of space.This box should scroll when it runs out                 of      space.This box should scroll when it runs out of space.This box                 should scroll when it runs out of       space.This box should scroll                    when it runs out of space.This box should scroll when it runs out of                    space.This box should scroll when it runs out of space.This box should scroll                   when it runs out of         space.This box should scroll when it runs out                   of space.This box should scroll when it runs out of         space.This box                  should scroll when it runs out of space.This box should scroll when it runs out                 of      space.This box should scroll when it runs out of space.This box                 should scroll when it runs out of       space.This box should scroll                    when it runs out of space.This box should scroll when it runs out of                    space.This box should scroll when it runs out of space.This box should scroll                   when it runs out of         space.This box should scroll when it runs out                   of space.This box should scroll when it runs out of         space.This box                  should scroll when it runs out of space.This box should scroll when it runs out                 of      space.This box should scroll when it runs out of space.This box                 should scroll when it runs out of       space.This box should scroll                    when it runs out of space.This box should scroll when it runs out of                    space.This box should scroll when it runs out of space.This box should scroll                   when it runs out of         space.This box should scroll when it runs out                   of space.
        </p>
    </div>

Edit:

Хм, извините. Я не очень понимаю, что вы говорите, или как их использовать.

Ответы [ 4 ]

2 голосов
/ 03 марта 2012

Ник Мейринг ответил на правильное решение, но трудно изменить цвет в длинных абзацах, находя конкретные слова и применяя к ним css. Это нормально в случае коротких текстов, но для длинных абзацев и переменных текстов вам необходимо применить общее решение.

Решение CSS: (Не уверен во всех браузерах)

Если вам разрешено использовать jQuery :

или Вы можете использовать методы замены строк на языке сервера. Например, str_replace в PHP:

$text = str_replace("red", "<span class='red-class'>red<span>", "This is red");
1 голос
/ 03 марта 2012

вы можете создать интервал вокруг слов, которые вы хотите изменить цвет.

Я создал демо для вас на http://jsfiddle.net/LwR8D/

0 голосов
/ 03 марта 2012

Грязное, но работающее решение с innerHTML:

var words_and_colors = [
    {'word':'this', 'color':'red'},
    {'word':'to', 'color':'blue'}
];

function hilte_words_in_element (element, words) {
    for (var z=0; z < words.length; z++) {
        var re = new RegExp('('+words[z]['word']+'\\b)', 'gi')
        element.innerHTML =  element.innerHTML.replace(
            re,
            "<span style=\"color:"+words[z]['color']+"\">$1</span>"
        );
    }
}
hilte_words_in_element(document.getElementById('changeMe'), words_and_colors);

Поиграть с ним: http://jsfiddle.net/8vDgH/

Обратите внимание, что это считается "плохим" - с этим не следует иметь дело innerHTML если этого можно избежать.Не зная обстоятельств, в которых вы его используете, я не могу более конкретно взаимодействовать с DOM;вы действительно знаете, для чего вы его используете, поэтому я предлагаю вам реорганизовать код, чтобы использовать более приемлемые средства изменения содержимого узла.

Также обратите внимание, что если это может быть выполнено на стороне сервера, онобыло бы гораздо более эффективным.Вы бы использовали аналогичную концепцию, но делайте это до того, как содержимое будет выведено.Я не знаю, является ли это жизнеспособным для вашего варианта использования, но если это так, нет сомнений, что это будет маршрут с наилучшей производительностью (и вы сможете избежать ужаса и зла innerHTML)

0 голосов
/ 03 марта 2012

Да, я знаю, что вопрос не имеет тега javascript или jquery, но это может быть предложение:)

добавить это к ответу @Nic Meiring:

добавитьследующую строку в ваш <header></header> раздел страницы:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 

затем добавьте еще один <script></script> раздел для вызова следующего javascript в ваших страницах <header></header> section:

(function($) {
  var thePage = $("body");
  thePage.html(thePage.html().replace(/This/ig,'<span id="This">This</span>'));
})(jQuery)

Скриптовая ссылка

Использование jQuery для замены слова

...