hamze torabzade
hamze torabzade

Reputation: 7311

replace span text with a string with jquery

in below code if i replace temp in $(this).text(temp); with "something" it works and change span text, but when i use a string.format it doesn't work.

jquery code:

  var x = $("span.resource");           
  x.each(function () {            
       if ($(this).attr('id') = "l1") {
           var temp = String.Format("{0}/{1}", variable1,variable2);
           $(this).text(temp);
       });

Upvotes: 0

Views: 5531

Answers (2)

mekwall
mekwall

Reputation: 28974

If you look at MDC there's no method named Format for the String object. My guess is that you are confusing languages (JavaScript and C#), which is quite common for multi-language developers.

However, everything's not lost. You can easily recreate an equivalent method in JavaScript by adding to the prototype of the String object. Credits go to gpvos, Josh Stodola, infinity and Julian Jelfs who contributed to these solutions to a similar problem.

String.prototype.format = function(){
  var args = arguments;
  return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; });
};

With a little tweaking it should work like this:

$("span.resource").each(function(){
    if (this.id == "l1") {
        var $this = $(this),
            newText = $this.text().format(var1, var2);
        $this.text(newText);
    }
});

Blair Mitchelmore have a similar implementation on his blog, but with some extra features and added functionality. You might want to check that out as well!

Upvotes: 1

Ant
Ant

Reputation: 3887

You had syntax errors, and String.Format doesn't exist in javascript. This works:

  $("span.resource").each(function () {             
       if ($(this).attr('id') == "l1") {
           var temp = variable1 + '/' + variable2;
           $(this).text(temp);
       }
  });

Upvotes: 0

Related Questions