如何确定javascript已完成某些操作

如何确定javascript已完成某些操作,javascript,ios,mobile-safari,Javascript,Ios,Mobile Safari,ios上的JS相当慢。例如,在这段代码中,Js在能够添加块样式之前添加了类。这会打断页面上的动画 comments.style.display="block";comments.className = "show"; 我有一个解决办法,可以解决ios上的问题,但感觉不对: comments.style.display="block";setTimeout(function(){comments.className = "show";},1) 有没有办法确定是否设置了块样式,然后才触发第二部分

ios上的JS相当慢。例如,在这段代码中,Js在能够添加块样式之前添加了类。这会打断页面上的动画

comments.style.display="block";comments.className = "show";
我有一个解决办法,可以解决ios上的问题,但感觉不对:

comments.style.display="block";setTimeout(function(){comments.className = "show";},1)
有没有办法确定是否设置了块样式,然后才触发第二部分


谢谢你的建议

你就不能用if吗

<div id="foo" style="display: none;">foo</div>

var div = document.getElementById( "foo"  );
if ( div.style.display == "none" ) {
    div.style.display = "block";
}

这是一个辉煌的混乱的黑客可能会工作:

comments.blockStyleEvent = function() {
   if ( this.style.display === "block" ) {
      this.onBlockStyleEvent.apply(this);
   }
};

comments.onBlockStyleEvent = function() {
   this.className = "show";
};

setInterval(function(){
  comments.blockStyleEvent();
}, 1);
您还可以创建两个css类,一个是
show
,另一个是
showAsBlock
,例如,然后您可以执行以下操作:

// somewhere else
comments.className = "hide";

// ...then
comments.className = "showAsBlock";

只需使用一个简单的if/then语句来检查(?)@harmonickey甚至不知道“then”的存在!需要调查一下:)哈哈,是的。我只是想澄清一下我所说的“如果”是什么意思。我真的不知道怎样才能把它写得更清楚。我想让它成为一门课程。当这一步完成时,会触发其他事情。我上面的代码只运行了所有的代码,不需要等待每一步的完成。所以,你想听听“更改类”事件吗?你提供的链接只针对jquery:(.没有帮助。不,第一个不使用jquery。我正在写一个例子…等一下。你的第二个答案(2个类)可能确实解决了这个问题!很棒、简单且显而易见的解决方案:)。'我会试着回去报到!没问题,越简单越好,越简单越好。如果出现问题,CSS预处理器(例如SASS或更少)也可以帮助减少一些重复性。
// somewhere else
comments.className = "hide";

// ...then
comments.className = "showAsBlock";