点击一个按钮就无限地调用javascript函数?
好吧,这是一个有点奇怪的要求。因此,我已经编写了使用JavaScript生成瓷砖的程序(在stack overflow的帮助下),现在我想让它在点击一个按钮时,我的ChangeColor函数被调用一组次数,以便瓷砖的颜色在你眼前随机变化。我有一个按钮,每次你点击它的颜色变化,但我怎么能使它如此,点击他们不断变化?我尝试过使用JavaScript函数set Interval(函数,时间),但似乎无法让它正常工作。以防万一,我也会通知你,我正在把一个按钮,也将停止随机的颜色变化。。这是密码。任何帮助都会很好点击一个按钮就无限地调用javascript函数?,javascript,html,Javascript,Html,好吧,这是一个有点奇怪的要求。因此,我已经编写了使用JavaScript生成瓷砖的程序(在stack overflow的帮助下),现在我想让它在点击一个按钮时,我的ChangeColor函数被调用一组次数,以便瓷砖的颜色在你眼前随机变化。我有一个按钮,每次你点击它的颜色变化,但我怎么能使它如此,点击他们不断变化?我尝试过使用JavaScript函数set Interval(函数,时间),但似乎无法让它正常工作。以防万一,我也会通知你,我正在把一个按钮,也将停止随机的颜色变化。。这是密码。任何帮助
<!doctype html>
<html>
<style>
.cell {
width: 100px;
height: 100px;
display: inline-block;
margin: 1px;
padding:4px;
}
button{
float:left;
padding:4px;
}
</style>
<title></title>
<head><script type="text/javascript">
function generateGrid(){
for (i = 0; i < 5; i++) {
for (b = 0; b < 5; b++) {
div = document.createElement("div");
div.id = "box" + i +""+ b;
div.className = "cell";
document.body.appendChild(div);
}
document.body.appendChild(document.createElement("br"));
}
}
function changeColors(){
for(i =0;i < 5; i++){
for (b=0;b<5;b++){
var holder=document.createElement("div");
holder=document.getElementById("box" + i +""+ b);
holder.style.backgroundColor = getRandomColor();
}
}
}
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
</script>
</head>
<body>
<script>
generateGrid();
changeColors();
</script>
<button onclick="changeColors();">Click me to change colors</button>
<button onclick="window.setInterval(changeColors(),2000);">Click me to start cycle</button>
</body>
</html>
.细胞{
宽度:100px;
高度:100px;
显示:内联块;
保证金:1px;
填充:4px;
}
钮扣{
浮动:左;
填充:4px;
}
函数generateGrid(){
对于(i=0;i<5;i++){
对于(b=0;b<5;b++){
div=document.createElement(“div”);
div.id=“box”+i+”+b;
div.className=“单元格”;
文件.正文.附件(div);
}
document.body.appendChild(document.createElement(“br”));
}
}
函数changeColors(){
对于(i=0;i<5;i++){
对于(b=0;b您的setTimeoutFunction不完全正确
var-stop=false;
函数generateGrid(){
对于(i=0;i<5;i++){
对于(b=0;b<5;b++){
div=document.createElement(“div”);
div.id=“box”+i+”+b;
div.className=“单元格”;
文件.正文.附件(div);
}
document.body.appendChild(document.createElement(“br”));
}
}
函数changeColors(){
对于(i=0;i<5;i++){
对于(b=0;b您的changecorders()
应该是changecorders
forwindow.setInterval
我清理了您的代码并添加了停止/开始按钮。通过创建一个元素数组,它省去了每次迭代都必须定位每个元素的ChangeColor函数。最后,我更改了generateGrid函数以接受宽度和高度。有点过火,但我被冲昏头脑了:)
HTML
单击我以更改颜色
启动周期
停止循环
JavaScript
var elements = [];
function generateGrid(width, height) {
for (var y = 0; y < height; y++) {
for (var x = 0; x < width; x++) {
var div = document.createElement("div");
div.id = "box" + y + "" + x;
div.className = "cell";
document.body.appendChild(div);
elements.push(div);
}
document.body.appendChild(document.createElement("br"));
}
}
function changeColors() {
for (e in elements) {
elements[e].style.backgroundColor = getRandomColor();
}
}
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
var interval = null;
function startCycle() {
if (interval) return;
interval = window.setInterval(changeColors, 500);
}
function stopCycle() {
clearInterval(interval);
interval = null;
}
generateGrid(3, 5);
changeColors();
var元素=[];
函数生成器ID(宽度、高度){
对于(变量y=0;y
简单只需单击按钮即可添加一个功能尝试以下操作:
.细胞{
宽度:100px;
高度:100px;
显示:内联块;
保证金:1px;
填充:4px;
}
钮扣{
浮动:左;
填充:4px;
}
函数generateGrid(){
对于(i=0;i<5;i++){
对于(b=0;b<5;b++){
div=document.createElement(“div”);
div.id=“box”+i+”+b;
div.className=“单元格”;
文件.正文.附件(div);
}
document.body.appendChild(document.createElement(“br”));
}
}
函数changeColors(){
对于(i=0;i<5;i++){
对于(b=0;b这正是我想要的..但是没有jQuery有没有办法做到这一点呢?从技术上讲,我不应该使用它,否则我会这么做..但是如果没有jQuery的办法我可以做到的话:没有jQuery我也可以。如果答案对你有效,请接受它作为问题的答案当你点击startCyc时会很有趣le
很多次了!这太棒了,谢谢你的帮助。你为我添加了一点额外的停止按钮,但没关系;)我很高兴能帮上忙。别忘了投票/接受答案关于代码的快速问题,你能给我解释一下你是如何编程开始/停止循环的吗?我对整个间隔的事情感到困惑。我只是想更好地理解它的原理。首先我们声明一个间隔
变量。然后当我们调用设置间隔
时,我们会将函数changeColors
setInterval
的引用传递给它,返回一个我们分配给interval
的id。对于stopCycle
,我们将interval
(id)传递给clearInterval
。最后,我们将interval
重置为null
。
var elements = [];
function generateGrid(width, height) {
for (var y = 0; y < height; y++) {
for (var x = 0; x < width; x++) {
var div = document.createElement("div");
div.id = "box" + y + "" + x;
div.className = "cell";
document.body.appendChild(div);
elements.push(div);
}
document.body.appendChild(document.createElement("br"));
}
}
function changeColors() {
for (e in elements) {
elements[e].style.backgroundColor = getRandomColor();
}
}
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
var interval = null;
function startCycle() {
if (interval) return;
interval = window.setInterval(changeColors, 500);
}
function stopCycle() {
clearInterval(interval);
interval = null;
}
generateGrid(3, 5);
changeColors();