变量不会在函数外部发生变化

时间:2012-11-11 02:43:12

标签: jquery forms variables

JSFiddle:http://jsfiddle.net/veksen/7TRgE/1/

如果我从我的函数中调用变量值,它就可以工作。但是,如果我在函数之外调用它,它就不会发生。

我觉得这与改变有关,因为它首先被指定为好,但不会改变。

var diff_res = { norm:0, nm:-40, hell:-100 };
var difficulty = "hell"; 
$("select").change(function () {
    difficulty = $("select option:selected").val();
    $(".inside").text(diff_res[difficulty]);
})
.change();

var char_fr = 30;
char_fr += diff_res[difficulty];

$(".outside").text(diff_res[difficulty]);

2 个答案:

答案 0 :(得分:1)

.inside有一个事件说:“如果有人改变了我[...]”。 .outisde没有事件。所以:

$(".outside").text(diff_res[difficulty]);

仅执行一次。

请参阅http://jsfiddle.net/7TRgE/2/

选择的选项是:“nm”,默认值为“-40”。

答案 1 :(得分:1)

<强>更新

通过重新执行,我的意思是这样的:

$(document).ready(function () {
    'use strict';
    var diff_res = {
            norm: 0,
            nm: -40,
            hell: -100
        },
        difficulty = "hell",
        char_fr = 30,
        changeOutside = function changeOutside() {
            $(".outside").text(diff_res[difficulty]);
        };
    $("select").change(function () {
        difficulty = $("select option:selected").val();
        $(".inside").text(diff_res[difficulty]);
        changeOutside();
    }).change();
    char_fr += diff_res[difficulty];
});

关键是$(".outside").text(diff_res[difficulty]);仅在加载DOM时执行一次,这就是text()最初设置为-100的原因。要再次更改.outside,您需要重新运行$(".outside").text(diff_res[difficulty]);

<强> ORIGINAL:

你的问题是:

$(".outside").text(diff_res[difficulty]);

仅在$(document).ready()函数中执行一次。如果您希望更频繁地更改,则需要在change处理程序中重新执行该操作。