2016-06-15 2 views
0

У меня есть кусок строки:Строка замены (JavaScript)

'Dow<br> <span class="table-sub-header">Value</span>' 

Я хочу, чтобы заменить «Значение» внутри диапазона с произвольной переменной. Я знаю, что класс span будет там каждый раз.

Я пытался что-то вроде:

var s = 'Dow<br> <span class="table-sub-header">Value</span>'; 

А потом делать заменить что-то вроде этого, как регулярное выражение:

/<span class="table-sub-header">*</span>/ 

Но это выглядит неаккуратно. Есть ли чистый способ сделать это?

Редактировать: «Значение» в этом случае является произвольным. Я не знаю, что это такое, и мне нужен общий метод для замены того, что находится в промежутке.

+0

Вы в среде браузера? Можете ли вы взаимодействовать с DOM, чтобы справиться с этим? –

+0

Я в браузере, и я получаю это значение как свойство из объекта библиотеки. Я подумал, что было бы странно изменить его на объект DOM только для размещения строк, тем более, что мне нужно будет преобразовать объект DOM обратно в строку. – user1413969

ответ

0

Вы пробовали метод строки replace?

var s = 'Dow<br> <span class="table-sub-header">Value</span>'; 
s = s.replace("Value", "New Value"); 
+0

Хотя это отвечает на конкретный пример в вопросе, я не уверен, что это то, что происходит после OP. Если вы это делаете, вы можете просто написать «var s =» Dow
Новое значение '; 'в первую очередь. –

+0

Если он работает со строками, то это самый простой. Если он работает с элементами HTML (а не строками), то либо @tsh answer, либо '$ (". Table-sub-header "). Text (" my text ")' –

+0

Но он упомянул строку ... отсюда ответ –

3

Если вы работаете в браузере, вы можете попробовать поместить s в некотором элементе innerHTML и заменить его, как это в йот сделать

var s = 'Dow<br> <span class="table-sub-header">Value</span>'; 
t = document.createElement('div'); 
t.innerHTML = s; 
t.querySelector('.table-sub-header').textContent = 'Something Else'; 
t.innerHTML // 'Dow<br> <span class="table-sub-header">Something Else</span>' 

BTW, ваше регулярное выражение должно быть что-то вроде /<span class="table-sub-header">(.*)<\/span>/

0

Да, вы можете использовать jQuery для этого.

var s = 'Dow<br> <span class="table-sub-header">Value</span>'; 
 

 
var div_wrapper = '<div style="display:none;">'+s+'</div>'; 
 

 
$(document).ready(function(){ 
 
    $('body').append(div_wrapper); 
 
    var new_value = 'newvalue'; // an arbitrary variable 
 
    $('.table-sub-header').text(new_value); 
 
    console.log($('.table-sub-header').text()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<html> 
 
    <body> 
 
    
 
    </body> 
 
    </html>

+0

- это строка '' 'trustable? что если 's = 'Dow
'' – tsh

+0

@tsh string s должен быть надежным, еще нужно уточнить его перед добавлением его в div, используя параметр javascripts filter html tags. – Manish

0

Вы можете динамически заменить то, что находится в span тега с помощью JavaScript или любую библиотеку JavaScript. Например, используя Javascript, вы можете использовать селектор классов для выбора диапазона и установить внутренний html на любое значение, которое вы хотите, на основе какого-либо условия или логики. Вы можете также использовать Jquery .text()

относятся к ссылкам ниже https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML http://api.jquery.com/text/

Смежные вопросы