-1

アプリ内には、常に表示される一種の下部バーがあり、h1 とボタンを含む div があります。コード化したボタンをクリックするたびに、h1 のテキストを乱数で変更するアニメーションが表示されます。ここまではすべて正常に動作します。

私の目標は、ボタンを押さずにこれを行うことですが、すべてのアプリの実行中に x 秒ごとに行うことです。「setInterval(func, ms);」を使ってみた エラーは発生しませんでしたが、一度だけ発生しました。

私のエラーは、コードを「どこに置くか」だと思います。私はこれを理解していません。そのため、ボタンのイベント ハンドラーにコードを配置して、それが機能するかどうかを確認しようとしましたが、とにかく 1 回実行しました。ユーザーが何か他のことをしている間、この関数が実行され続ける必要があります... これはアプリ内の時計のようなものです: あなたが何か他のことをしている間、継続的に動作する必要があります。

私の機能コード:

function fraseCasuale(sel) {
    var i = 1 + Math.floor(Math.random() * (groupedItems.length-1));
    var oggetto = groupedItems.getAt(i);

    if (sel === 1) {
        document.getElementById("frasecasuale").textContent = oggetto.frase;
        document.getElementById("autore").textContent = oggetto.nome;
        document.getElementById("genere").textContent = oggetto.genere;
    } else {
        document.getElementById("frasecasuale2").textContent = oggetto.frase;
        document.getElementById("autore2").textContent = oggetto.nome;
        document.getElementById("genere2").textContent = oggetto.genere;
    }
}

そして、私がそれをどのように呼ぶか、例えば:

setInterval(fraseCasuale(1), 5000);

私のアプリケーションは、Visual Studio 2012 for Windows Store aps のグリッド テンプレートに基づいています。上記のバーを、他のページのコンテナである「default.html」に追加しました。

4

3 に答える 3

2

このようなものはうまくいきませんか?

function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

var ms = 2000;
var func = function () {
    var randNum = getRandomInt(1, 253);    // Gets random number between 1 and 253
    document.getElementById("element_id").innerHTML = randNum;
};

setInterval(func, ms);

http://jsfiddle.net/FQSAH/1/

于 2013-02-25T15:40:37.500 に答える
1

コードの問題は、setInterval に関数を渡していないことです。関数呼び出し fraseCasuale(1) の 1 回の結果を渡しているため、その関数の結果が setInterval に渡されます。

パラメータを渡す必要があるため、 setTimeout を使用すると、次のように、関数ポインタとタイムアウト間隔の後に引数を指定できます。


setInterval(fraseCasuale,5000,1);

定義された「ページ」でこれを行う場合は、home.js で次のようにします。


    WinJS.UI.Pages.define("/pages/home/home.html", {
        // This function is called whenever a user navigates to this page. It
        // populates the page elements with the app's data.
        ready: function (element, options) {
            setInterval(this.fraseCasuale, 1000, 656);
        },

        fraseCasuale: function (sel) {
            console.log(sel);
            var i = 1 + Math.floor(Math.random() * (4 - 1));
            var element = document.getElementById("updateMe");
            element.textContent = i;
        }
    });

または、default.js を使用するだけの場合は、ex のすぐ上にある app.ready にコードをスローできます。app.oncheckpoint (関数の上または下の順序は実際には関係ありません。例を示す場所を提供するだけです)

したがって、default.js では次のようになります。


  app.onready = function (args) {
        //1 is a placeholder for your parameter
        setInterval(fraseCasuale,5000,1);
    };
于 2013-03-02T06:43:24.303 に答える
1

これはうまくいくはずです...

var id = window.setInterval(function(){randomNumber()},1000);

function randomNumber()
{
  var rand = Math.floor(Math.random()*6)
  //Do whatever you want with that number
}

クイックJSBin : http://jsbin.com/egajog/1/

于 2013-02-25T15:40:31.270 に答える