Поиск в переменной и запуск функции
Есть переменная:
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, время: 11:43. |