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]);
答案 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
处理程序中重新执行该操作。