Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2017, 15:35
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Поиск в переменной и запуск функции
Есть переменная:
string = "test((name1))testdfe((name2))";


Если там есть ((ИМЯ)) необходимо это заменить данными с document.getElementById(ИМЯ).innerHTML

Можно наверное через такую функцию менять данные. Но у меня проблемы с поиском в string этих ((*)).

function magija(name) {
 return document.getElementById(name).innerHTML;
}
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2017, 18:43
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

var str='test((name1))testdfe((name2))';

alert(str.match(/\(\(\S+?\)\)/gim));
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2017, 20:25
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Не нравится мне мой код, он работает, но какой-то он некрасивый.
Помогите пожалуйста сделать конфетку

<div id="name1">hello</div>
<div id="test">hello</div>


var str='test((name1))testdfe ((test))';
data = str.replace(str.match(/\(\(\S+?\)\)/gim)[0], document.getElementById(str.match(/\(\(\S+?\)\)/gim)[0].slice(2, -2)).innerHTML);
src = data.replace(str.match(/\(\(\S+?\)\)/gim)[1], document.getElementById(str.match(/\(\(\S+?\)\)/gim)[1].slice(2, -2)).innerHTML);
alert(src);
Ответить с цитированием
  #4 (permalink)  
Старый 15.05.2017, 09:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

dima85, так пойдет?

<div id="name1">hello name1</div>
<div id="test">hello test</div>
<script type='text/javascript'>
var str='test((name1))testdfe ((test))';
var arr=str.match(/\(\(\S+?\)\)/gim);
for (var i=0; i<arr.length; i++) {
	var id=arr[i].match(/[^()]+/);
	var txt=document.getElementById(id).innerHTML
	str = str.replace(new RegExp('\\(\\('+id+'\\)\\)','gim'), txt);
};
alert(str);
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 15.05.2017, 09:26
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Значительно лучше. Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 15.05.2017, 12:21
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var str = "test((name1))testdfe((name2))";

str = str.replace(/\(\(([\w-]+)\)\)/g, function(matches, id) {
    var elem = document.getElementById(id);
    return elem ? '((' + elem.innerHTML + '))' : matches;
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск функции mrKot Общие вопросы Javascript 3 16.01.2016 06:17
получение значения переменной из функции java script valdur2000 Общие вопросы Javascript 1 14.11.2013 20:22
Переопределение переменной в функции tsigel Общие вопросы Javascript 5 06.09.2013 18:26
изменение значения глобальной переменной внутри функции mgmarket Серверные языки и технологии 14 13.09.2011 00:56
изменение переменной в функции ananax Общие вопросы Javascript 19 12.01.2011 12:09