2

これは説明が難しいです。私の質問が理解できない場合は、コメントで質問してください。

以下のコードをご覧ください。最初に、配列からランダムなテキストを生成しています。次にdivと2 つのdiv要素があります。私が達成しようとしているのは、開始ボタンが最初に押されたときに、任意のランダムなテキストをおよびdiv に表示できることです。開始ボタンを 2 回押すと、最初に表示されたテキストが表示され、ランダムなテキストが古い div に表示され、ループが続行されます。currentoldcurrentoldold divcurrent div

old0 で初期化しようとしましたが、undefined関数内として表示されています。

<script>
    function randomFromTo(from, to) {
        return Math.floor(Math.random() * (to - from + 1) + from);
    }
    var arrstring = new Array("images", "wallpaper", "photos", "vector",
        "designer", "wordpress", "jquery", "extjs", "scripting", "blogging", 
        "search", "tagging", "digital", "javascript", "server", "hosting",
        "social", "twitter", "graphic", "photoshop", "netbeans", "mysql",
        "apache", "iphone", "mobile", "android", "framework", "usability",
        "optimization", "interface", "developer");

    function random() {
        randomIndex = randomFromTo(0, arrstring.length - 1);
        return randomIndex;
    }

    var old = 0;
    function start() {
        var all = old;
        var old = random();
        $(".current").text(arrstring[all]);
        $(".old").text(arrstring[old]);
    }
</script>

<div class="current">old</div>
<div class="old">new</div>

<input type="button" onclick="start();" value="start" />
4

5 に答える 5

2

これにより、同じ機能がよりクリーンな方法で提供されますが、グローバル スコープが汚染されることはありません。

jsフィドル

function get_Random_String() {

    var arrstring = new Array("images", "wallpaper", "photos", "vector",
        "designer", "wordpress", "jquery", "extjs", "scripting", "blogging",
        "search", "tagging", "digital", "javascript", "server", "hosting",
        "social", "twitter", "graphic", "photoshop", "netbeans", "mysql",
        "apache", "iphone", "mobile", "android", "framework", "usability",
        "optimization", "interface", "developer");

    return arrstring[Math.floor(Math.random() * arrstring.length)];

}

function cycle_randoms() {
    $(".current").text($(".old").text());
    $(".old").text(get_Random_String());
}


$('input[value=start]').on('click', function () {
    cycle_randoms();
});
于 2013-10-19T08:21:37.317 に答える
0

同じ名前のグローバル変数とローカル変数の使用.. var をローカル変数にのみ削除します.. その関数内で異なる意味を与えます..

    var old = 1; // Global
    function start() {
    var all = old; //local
    var old = random(); //local..
    ..}
于 2013-10-19T08:23:09.583 に答える