-1

在我的应用程序中,我有一种始终显示的底栏,其中有一个带有 h1 的 div 和一个按钮。每次我单击我编码的按钮和动画时,都会用随机数更改 h1 的文本。到这里一切正常。

我的目标是在不按按钮的情况下制作这个东西,但在所有应用程序执行期间每隔 x 秒。我尝试使用“setInterval(func, ms);” 我没有收到任何错误,但它只是做了一次。

我认为我的错误是“在哪里放置”代码。我不明白这一点。因此,我尝试将代码放在按钮的事件处理程序上,只是为了看看它是否有效,但无论如何它还是做了一次。我需要在用户执行其他操作时继续执行此功能...就像应用程序中的时钟:它应该在您执行其他操作时连续工作。

我的功能代码:

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

这应该工作...

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 回答
1

代码中的问题是您没有将函数传递给 setInterval,而是传递了函数调用 fraseCasuale(1) 的 ONE TIME 结果,因此该函数的结果就是传递给 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,那么您可以将您的代码放在 app.ready 中,就在上面的 ex。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 回答