javascript - 函数内调用的函数不起作用

标签 javascript

我将发布它,因为我找不到如何解决该问题的答案。

我有以下代码,可以更改某些 div 的背景颜色。 我有一个用于 changeSqColor() 的函数,在另一个函数中调用时该函数不起作用。 这里有什么问题? (数组颜色已定义,元素数量 = div 数量)

var squares = document.getElementsByClassName("square");

function changeSqColor() {
    for (var i = 0; i < squares.length; i++) {
        squares[i].style.background = colors[i];
    }
}

changeSqColor(); // this works ok colors are changes

function resetGame() {
    //other commands
    changeSqColor(); //this one doesnt work, in console it says 'undefined'
}

最佳答案

有时您应该在代码中调用函数resetGame。您尚未调用 resetGame

var squares = document.getElementsByClassName("square");
let colors = ['red','green','blue','white','yellowgreen'];
function changeSqColor() {
  for (var i = 0; i < squares.length; i++) {
     squares[i].style.background = colors[i]; 
   }
setTimeout(function(){resetGame();},3000);// call resetGame Function.
}
changeSqColor(); 

function resetGame (){
 for (var i = 0; i < squares.length; i++) {
  squares[i].style.background = colors[0]; 
  }
  setTimeout(function(){changeSqColor();},3000);
  // As you mentioned calling changeSqColor() 
}
<div class="square">1</div>
<div class="square">2</div>
<div class="square">3</div>
<div class="square">4</div>
<div class="square">5</div>

关于javascript - 函数内调用的函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52740301/

相关文章:

javascript - 使一个 div 宽度为另一个 div 的一半

javascript - 将 jQuery 的 CSS 计时转换为 ms

javascript - 跨域加载并执行JS

javascript - 如何以编程方式在 YouTube 上加载评论部分? (不滚动)(JS/HTML/DOM)

javascript - 当用户使用 JavaScript 键入内容时,如何设置搜索输入焦点?

javascript - 创建新的 html 标签(元素)

javascript - 从 objective-c 中的 WKwebview 中删除 <div><br>

javascript - 动态创建元素的事件处理程序?

javascript - Angularfire - 检索数组中所有对象的唯一ID

javascript - 对绑定(bind)元素的 Angular 访问