Jared Eitnier
Jared Eitnier

Reputation: 7152

Update variable when value is present

I have a simple string of code. I want to show a default value when the page is loaded where the function numResults() is. At some point I want to update numResults() with a new value and then change the string without reloading the page.

$('#step1').before('Showing results 1 - ' + numResults());

function numResults(value) {
    var results = 10; // default number

    if (value) {
        return value; // show updated value
    } else {
        return results; // show default
    }
}

Upvotes: 1

Views: 207

Answers (3)

Fernando Juarez
Fernando Juarez

Reputation: 87

First of all, close your if tag before start else. Well, if you're trying to do something simple, try this:

$(function () {
        $("#myText").val(numResults());

        $("#myButton").click(function(){
            $("#myText").val(numResults("123"));
        });
    });

    function numResults(value) {
        var results = 10; // default number

        if (value) {
            return value; // show updated value
        }
        else {
            return results; // show default
        }
    }

Upvotes: 0

Ben Taitelbaum
Ben Taitelbaum

Reputation: 7403

This is a quintessential use case for knockout.js.

Running example at: http://jsfiddle.net/55fXu/1/

<div data-bind="text:numResults"/>

<script>
$(function() {
  function AppViewModel() {
    this.numResults = ko.observable(10);
  }

  ko.applyBindings(new AppViewModel());
});
</script>

Upvotes: 2

Bergi
Bergi

Reputation: 664538

I think you can utilize a jQuery.Callbacks object for this:

// flags: store latest value, and prevent same callback adding multiple times
var resultNumberChanged = $.Callbacks("memory unique");
resultNumberChanged.fire(10); // init with "default number"

resultNumberChanged.add(function(val) {
    $('#step1').before('Showing results 1 - ' + val); // update each time it changes
}); // will also be fired immediately, as there is the default value already

// then, at any point, e.g. inside the numResult function when there is a parameter
…
    resultNumberChanged.fire(newvalue);

Upvotes: 1

Related Questions