如何调用Javascript函数并使其正确执行两次?

如何调用Javascript函数并使其正确执行两次?,javascript,performance,internet-explorer-9,Javascript,Performance,Internet Explorer 9,晚上好,我有一个javascript函数,可以在用户单击表格行时设置背景色等。除非调用两次,或者当我按F12键开发工具时,该函数才能正确执行,类似于 我设法按如下方式处理它,但问题是,当用户再次单击表行时,需要大约2-3秒来更改背景颜色。如何减少函数执行两次的时间 JavaScript setBackGroundColorOnIE(表格行编号){ //........ //........ setBackGroundColorOnIE(tableRowNumber)//我需要这个函数在一次调用

晚上好,我有一个javascript函数,可以在用户单击表格行时设置背景色等。除非调用两次,或者当我按F12键开发工具时,该函数才能正确执行,类似于

我设法按如下方式处理它,但问题是,当用户再次单击表行时,需要大约2-3秒来更改背景颜色。如何减少函数执行两次的时间

JavaScript


setBackGroundColorOnIE(表格行编号){
//........
//........
setBackGroundColorOnIE(tableRowNumber)//我需要这个函数在一次调用中执行两次
}

我知道这是一个糟糕的做法,但我真的不知道如何修复IE9中的兼容性问题。所以,我提出了这样的想法。需要一些提示和建议,谢谢高级版。

一个简单的解决方案是包含jquery ui,它允许您更改颜色,然后在完成颜色更改后进行回调。这里是一个JS摆弄jquery和jQueryUI


}))

您可以添加一些条件来检查您的函数是否需要再次运行,如:

function setBackGroundColorOnIE (tableRowNumber) {   
   //check if your condition is met
   if( some_condition) {
       var timerId = setTimeout(function() {
        setBackGroundColorOnIE (tableRowNumber);
       }, 5000); //set to 5 seconds
   }
   else {
       clearTimeout ( timerId );
   }
}
//call the function
setBackGroundColorOnIE(some_value); 

有一个无限循环,除非你有一个条件或什么东西打破它。这将导致stackoverflow,因为它是一个递归CallinFine循环,好的,非常感谢你指出这个问题。。。我会做些事情来打破循环,谢谢你的概念。。。由于某些问题,我的程序中不允许使用Jquery,thks。。。
$(function(){
$('button').on('click', function(){
    $('.background').animate({
        backgroundColor: '#000'
    }, 1500, function(){ alert('background-color changed!');});

});
function setBackGroundColorOnIE (tableRowNumber) {   
   //check if your condition is met
   if( some_condition) {
       var timerId = setTimeout(function() {
        setBackGroundColorOnIE (tableRowNumber);
       }, 5000); //set to 5 seconds
   }
   else {
       clearTimeout ( timerId );
   }
}
//call the function
setBackGroundColorOnIE(some_value);