Поиск в переменной и запуск функции
Есть переменная:
string = "test((name1))testdfe((name2))"; Если там есть ((ИМЯ)) необходимо это заменить данными с document.getElementById(ИМЯ).innerHTML Можно наверное через такую функцию менять данные. Но у меня проблемы с поиском в string этих ((*)). function magija(name) { return document.getElementById(name).innerHTML; } |
var str='test((name1))testdfe((name2))'; alert(str.match(/\(\(\S+?\)\)/gim)); |
Не нравится мне мой код, он работает, но какой-то он некрасивый.
Помогите пожалуйста сделать конфетку :) <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); |
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> |
Значительно лучше. Спасибо
|
var str = "test((name1))testdfe((name2))"; str = str.replace(/\(\(([\w-]+)\)\)/g, function(matches, id) { var elem = document.getElementById(id); return elem ? '((' + elem.innerHTML + '))' : matches; }); |
Часовой пояс GMT +3, время: 12:17. |