0

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

</p>

4

2 に答える 2

1

.inside「誰かが私を変えたら[...]」というイベントがあります。.outisdeイベントはありません。そう:

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

一度だけ実行します。

http://jsfiddle.net/7TRgE/2/を参照

選択したオプションは「nm」で、デフォルト値は「-40」です。

于 2012-11-11T02:46:40.320 に答える
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 がロードされたときに 1 回だけ実行されるということでした。これが、text()が最初に に設定されている理由-100です。もう一度変更する.outsideには、再実行する必要があります$(".outside").text(diff_res[difficulty]);

オリジナル:

あなたの問題は次のとおりです。

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

関数内で 1 回だけ実行され$(document).ready()ます。もっと頻繁に変更したい場合は、changeハンドラーでそれを再実行する必要があります。

于 2012-11-11T02:51:51.120 に答える