andylom
@andylom
Web-девелопер

Как найти «шорткод» (текст) и заменить его на нужное значени?

В теле документа есть "шорткод" [name1] и например [name2] надо найти этот текст и заменить на соответствующие значения. Как это сделать? Важна динамическая составляющая, найти [name$] узнав его числовое знаение и динамично подменить. То есть, просто найти заданный текст средствами jQuery я могу, но интересно именно как определить что за name и его номер и сколько таких на странице что бы динамично подставить нужные значения, например из XML файла.
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Если вам нужен простой клиентский шаблонизатор
https://twitter.github.io/hogan.js/
Ответ написан
В таких случаях используют String.prototype.replace, передавая функцию вторым аргументом:

var insertValues = function (string, values) {
    var counter = 0;

    return string.replace(/\[name(\$|\d+)\]/g, function (match, index) {
        if (index === '$') {
            return values[counter++];
        }

        return values[index - 1];
    });
}

var string = 'text text [name$] [name$] text text [name8] text [name$] text text text text',
    values = ['VALUE_1', 'VALUE_2', 'VALUE_3', 'VALUE_4', 'VALUE_5', 'VALUE_6', 'VALUE_7', 'VALUE_8', 'VALUE_9', 'VALUE_10'];

console.log(insertValues(string, values));

Ещё хочу заметить, что если вы используете получившуюся строку в $('body').html(result); это подразумевает полное пересоздание практически всех элементов на странице, а не просто замену текста внутри них. Это может вызвать ощутимые проблемы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы