2013-07-07 1 views
-2

Я предполагаю, что я задаю этот вопрос не так, к сожалению, все представленные материалы не совсем то, что мне было нужно, просто замена (до энного количества ...):как добавить повторяющийся номер на один с JS?

var temp = '1 1 <br>random text</br> 1 1 <br>random text</br> 1 1 <br>random text</br> 1 1'; 

на: (а также сохранение текста + теги, как они раньше)

var temp = '1 1 <br>random text</br> 2 2 <br>random text</br> 3 3 <br>random text</br> 4 4'; 
+5

Откуда вы взяли строку и что вы пробовали? –

+0

'' недействительный тег, если он должен быть одним. Кроме того, вам лучше всего создавать все HTML-файлы, а не делать много манипуляций с строками. – Bojangles

+4

@Bojangles Кто сказал, что это HTML? Это неверный XML, но OP может использовать другой формат. –

ответ

2

Основываясь на значительно измененном вопрос

Regular Expressions Смотрите и String.prototype.replace

Javascript

function modify(string) { 
    var n = 0; 

    return temp.replace(/\b1(\s+)1\b/g, function (all, whitespace) { 
     n += 1; 

     return n + whitespace + n; 
    }); 
} 

var temp = '1 1 <br>random text</br> 1 1 <br>random text</br> 1 1 <br>random text</br> 1 1'; 

console.log(modify(temp)); 

Выход

1 1 <br>random text</br> 2 2 <br>random text</br> 3 3 <br>random text</br> 4 4 

jsfiddle

1

Кроме того, что ваша разметка, кажется неправильно, вы можете использовать цикл и подсчитывать итератор дО ограниченного числа:

var items = 3; 
var temp = ''; 

for (var i = 1; i <= items; i++) { 
    temp += "<nr=" + i + ">lorem ipsum<nr=" + i + ">"; 
} 

console.log(temp); 
+0

'i

+0

@BenjaminGruenbaum Хорошая точка, обновленная 'loop'. – yckart

1

Вы можете использовать что-то вроде следующего. Внизу есть скрипка.

var temp = '<nr="1">lorem ipsum<nr="1">\ 
      <nr="1">lorem ipsum<nr="1">\ 
      <nr="1">lorem ipsum<nr="1">'; 

var tags = temp.split('   '); 
temp = ""; 
for(var i = 0; i < tags.length; i++){ 
    var tmp = tags[i].replace('<nr="1">', '<nr="'+(i+1)+'">'); 
    tmp = tmp.replace('<nr="1">', '<nr="'+(i+1)+'">'); 
    temp += tmp; 
} 
console.log(temp); 

http://jsfiddle.net/ZcYhZ/

1

Если вход может быть что угодно, и это не то, что вы строите сами, то регулярное выражение является лучшим выбором.

var n = 0; 
var rx = /(<nr=")1(">[^<]*<nr=")1(">)/g; 
var result = temp.replace(rx, function(whole, one, two, three){ 
    n += 1; 
    return one + n + two + n + three; 
});