存在值时更新变量

时间:2012-12-10 17:27:45

标签: javascript jquery

我有一个简单的代码串。我想在加载页面时显示默认值,其中函数numResults()是。在某些时候,我想用新值更新numResults(),然后更改字符串而不重新加载页面。

$('#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
    }
}

3 个答案:

答案 0 :(得分:2)

这是knockout.js的一个典型用例。

http://jsfiddle.net/55fXu/1/

运行示例
<div data-bind="text:numResults"/>

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

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

答案 1 :(得分:1)

我认为您可以使用jQuery.Callbacks object

// 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);

答案 2 :(得分:0)

首先,在启动else之前关闭if标记。 好吧,如果你想做一些简单的事情,试试这个:

$(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
        }
    }