fadeIn fadeOut if flag = true / false

Я пытаюсь выгнать коробку, когда flag = true или исчезать, когда flag = false, Я выбираю идентификаторы из массива n.

Почему мой флаг всегда верный?

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;
            };
        }
    }
}

4 ответа

Решение

Эта строка:

var flag = true;

наборы flag в true в начале каждой итерации цикла. Вы хотели бы переместить его выше 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 там.)

Или, конечно, посмотрите ответ Мартейна, если вам на самом деле не нужно flag В общем, просто переключение.

Проверять, выписываться 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();
});
 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;
                    };

                }
            }
        }

попробуй это

Попробуй это:

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 
                };       
    }
}
Другие вопросы по тегам