Functia prezentata aici poate fi utilizata pentru a inlocui nume de variabile (proprietate obiect, sau element array) JavaScript dintr-un sir, cu valoarea lor definita in JavaScript, folosind RegExp.
// Functia inlocuieste nume de variabile (array, proprietate_obiect) JS cu valoarea asociata lor
// Primeste sirul /-template. Returneaza sirul cu numele inlocuite
function replaceStrVar(str){
// Curs JavaScript & jQuery - https://marplo.net/javascript/
str = str.replace(/%(.*?)%/gi, function(a,b) {
// daca numele este element array, altfel e proprietate_obiect sau variabila
if(b.match(/[a-z0-9_]+\[[a-z0-9_]+\]/i)) {
var arritm = b.match(/([a-z0-9_]+)\[([a-z0-9_]+)\]/i); // obtine un array cu partile din nume
return window[arritm[1]][arritm[2]];
}
else {
var voitm = b.split('.');
return (voitm.length == 2) ? window[voitm[0]][voitm[1]] : window[voitm[0]];
}
});
return str;
}
- Numele de variabila /proprietate_obiect /element_array in sir trebuie adaugate intre aceste doua caractere %...% .
Aceasta functie poate fi utilizata pt a crea un simplu sir-template in JavaScript.
Iata un exemplu de utilizare a functiei replaceStrVar(), cu o variabila, un array si un obiect (pt a vedea ca functioneaza toate), si un sir-template cu numele lor care va fi inlocuit cu valoarea asociata lor in JavaScript, apoi rezultatul e adaugat intr-un tag HTML.
<div id="testpl">Sir Template:<br/><span class="sbi">Site-ul: <b>%website%</b> contine: %obj.content1%, si are aproximativ <b>%visits[2]%</b> vizitatori unici pe zi.</span></div>
<button onclick="testpl()">Test replaceStrVar()</button>
<script type="text/javascript"><!--
// Functia inlocuieste nume de variabile (array, proprietate_obiect) JS cu valoarea asociata lor
// Primeste sirul /-template. Returneaza sirul cu numele inlocuite
function replaceStrVar(str){
// JavaScript & jQuery Courses - http://www.coursesweb.net/javascript/
str = str.replace(/%(.*?)%/gi, function(a,b) {
// daca numele este element array, altfel e proprietate_obiect sau variabila
if(b.match(/[a-z0-9_]+\[[a-z0-9_]+\]/i)) {
var arritm = b.match(/([a-z0-9_]+)\[([a-z0-9_]+)\]/i); // obtine un array cu partile din nume
return window[arritm[1]][arritm[2]];
}
else {
var voitm = b.split('.');
return (voitm.length == 2) ? window[voitm[0]][voitm[1]] : window[voitm[0]];
}
});
return str;
}
/* Test replaceStrVar() */
var website = 'https://marplo.net'; // variabila simpla
var visits = new Array(1000, 2000, 5000); // array
// obiect
var obj = new Object();
obj.content1 = 'Cursuri Web Developmeent, Limbi Straine';
obj.content2 = 'Cursuri, Jocuri, Anime';
// Sirul (template)
var tpl = 'Site-ul: <b>%website%</b> contine: %obj.content1%, si are aproximativ <b>%visits[2]%</b> vizitatori unici pe zi.';
// adds the replacement in #testpl HTML element
function testpl(){
document.getElementById('testpl').innerHTML = replaceStrVar(tpl);
}
//-->
</script>
Rezultat:
Sir Template: Site-ul: <b>%website%</b> contine: %obj.content1%, si are aproximativ <b>%visits[2]%</b> vizitatori unici pe zi.