2017-08-24 83 views
-1

我试图褪色时flag = true或fadeOut当flag = false。 我从n数组中取出ids。fadeIn fadeOut if flag = true/false

为什么我的旗子是真的吗?

function setContentBox() { 
    for (var i = 0; i < jArrayText.length; i++){ 
     var flag = true; 

     if(!flag){ 
      document.getElementById(textWord[i]).onclick = function() { 
       var activeClass = $(this).find('.comment-box'); 
       activeClass.fadeOut(); 
       flag = true; 
      }; 
     }else if(flag){ 
      document.getElementById(textWord[i]).onclick = function() { 
       var activeClass = $(this).find('.comment-box'); 
       activeClass.fadeIn(); 
       flag = false; 
      }; 
     } 
    } 
} 
+3

你的问题是什么?它不起作用吗? – abhishekkannojia

+0

为什么标志总是正确的? – zynkn

+0

你的最终目标是什么?上面的代码似乎没有做我怀疑你想要的,但不知道你想要什么... –

回答

3

这条线:

var flag = true; 

flagtrue在每次循环的开始。你想把它移到for以上。

但该代码还有其他问题。我怀疑这是你在找什么:

function setContentBox() { 
    // Set flag to true *once* 
    var flag = true; 
    for (var i = 0; i < jArrayText.length; i++){ 
     // Hook the click event 
     document.getElementById(textWord[i]).onclick = function() { 
      var activeClass = $(this).find('.comment-box'); 
      // Use and update the flag 
      if (flag) { 
       activeClass.fadeIn(); 
      } else { 
       activeClass.fadeOut(); 
      } 
      flag = !flag; 
     }; 
    } 
} 

使用相同flag所有元素。如果你想为每个单元的标志,那么:

function setContentBox() { 
    for (var i = 0; i < jArrayText.length; i++){ 
     // Hook the click event 
     document.getElementById(textWord[i]).onclick = function() { 
      var activeClass = $(this).find('.comment-box'); 
      if (activeClass.data('flag')) {     // `flag` exists and is true 
       activeClass.fadeIn().data('flag', false); // Set `flag` to `false` 
      } else {          // `flag` is false or doesn't exist yet 
       activeClass.fadeOut().data('flag', true);; // Set `flag` to `true` 
      } 
     }; 
    } 
} 

(注意我倒的flag的意义在那里。)

或者,当然,see Martijn's answer如果你实际上并不需要根本不需要切换,只需切换即可。

+0

这里:'if(flag){activeClass.fadeIn(); } else {activeClass.fadeOut();}'可以被替换''activeClass.fadeToggle(flag)' – Martijn

+1

@Martijn:那[似乎没有记录](http://api.jquery.com/fadeToggle/ )。 –

+1

我站好了。切换是这样做的,动画切换显然没有,太快回复。下一次,在你说孩子之前的研究,哈哈 – Martijn

0
function setContentBox() { 
var flag = true; 
      for (var i = 0; i < jArrayText.length; i++){ 


       if(!flag){ 
        document.getElementById(textWord[i]).onclick = function() { 
         var activeClass = $(this).find('.comment-box'); 
         activeClass.fadeOut(); 
         flag = true; 
        }; 
       }else if(flag){ 
        document.getElementById(textWord[i]).onclick = function() { 
         var activeClass = $(this).find('.comment-box'); 
         activeClass.fadeIn(); 
         flag = false; 
        }; 

       } 
      } 
     } 

试试这个

+0

为什么?你改变了什么?你为什么改变它?代码转储不是有用的*答案。 –

+0

我改变了你刚才把var flag = true;在循环的外侧 –

1

结帐fadeToggle()

function setContentBox() { 
    for (var i = 0; i < jArrayText.length; i++){ 
     document.getElementById(textWord[i]).onclick = function() { 
      $(this).find('.comment-box').fadeToggle(); 
     }; 
    } 
} 

而这可能会更容易做来难:

$(".YourElements").on('click', function(e){ 
    $(this).find('.comment-box').fadeToggle(); 
}); 
+0

我想到'fadeToggle',然后......所有人都被抓住了旗帜。好一个。 –

-1

试试这个:

1)淡入/淡出上点击一个评论框的一些按钮提供了一个标志是真的

var flag = true; // if you need fade in and out effect 
    function setContentBox() { 
     for (var i = 0; i < jArrayText.length; i++){ 
       document.getElementById(textWord[i]).onclick = function() { 
        var activeClass = $(this).find('.comment-box'); 
      if(flag){ 
        activeClass.fadeToggle(); // fades in if hidden, fades out if shown     
      } 
       };  
    } 

}

2)淡入/淡出一些按钮的点击评论框(如果它是隐藏的褪色,如果它显示淡出)如果你想你不需要时的标志实现这一点

function setContentBox() { 
     for (var i = 0; i < jArrayText.length; i++){ 
       document.getElementById(textWord[i]).onclick = function() { 
        var activeClass = $(this).find('.comment-box');  
        activeClass.fadeToggle(); // fades in of hidden, fades out if shown 
       };  
    } 
}