简体   繁体   中英

Replace multiple instances of the same value in a javascript template

I have a javascript template were I want to replace a set value in multiple locations throughout the template, however in my current code only the first instance of the value placeholder is changing.

How do I replace all {{color}} placeholders with the same value?

My template:

<script type="text/template" id="styleTemplate">    
.item {
    color: {{color}};
    border-color:{{color}};
}
</script>

My JS:

var thisColor = "#000";
var template = $("#styleTemplate").html();
$('#styleTarget').html(template.replace("{{color}}",thisColor));

The result:

.item {
    color: #000;
    border-color:{{color}};
}

Akamaozu is really too lazy to make his code valid. A regular expression must be included in slashes, not backslashes . A backslash is needed inside a regex when you have to escape a character that otherwise has a special meaning or to create a metacharacter with a special meaning. So when you change your code to this it will work:

var thisColor = "#000",
    search = /{{color}}/g,
    template = $("#styleTemplate").html();

$('#styleTarget').html(template.replace(search, thisColor));

DEMO .

Replace:

$('#styleTarget').html(template.replace("{{color}}",thisColor));

With:

$('#styleTarget').html(template.replace(\\{{color}}\\g,thisColor));

String.prototype.replace will replace only the FIRST match. What I've done is replaced the search string with a regular expression that will search for all instances of said search string.

Cheers!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM