在我的应用程序内部我有一个底部栏总是显示,我有一个带有h1的div和一个按钮。每次我点击我编码的按钮和动画,确实用随机数改变h1的文本。直到这里一切正常。
我的目标是在没有按下按钮的情况下制作这个东西,但是在所有App执行期间每隔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”中,这是其他页面的容器。
答案 0 :(得分: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);
答案 1 :(得分: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/
答案 2 :(得分:1)
你的代码中的问题是你没有将函数传递给setInterval,你传递函数调用fraseCasuale(1)的ONE TIME结果,所以该函数的结果是传递给setInterval的结果。
由于您要将参数传递给它,因此setTimeout允许您在函数指针和超时间隔之后指定参数,例如:
setInterval(fraseCasuale,5000,1);
如果你在定义的'Page'中这样做,你会在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中抛出你的代码,就在前面。 app.oncheckpoint(订单在任何功能的上方或下方实际上并不重要,只是提供一个向您展示示例的地方)
所以在default.js中:
app.onready = function (args) {
//1 is a placeholder for your parameter
setInterval(fraseCasuale,5000,1);
};