@Valeriy1997

Где ошибка в подсчёте кликов?

Нужно, чтобы при условии, если переменная informer равна 0, значение id елемента записывалось в sfId_Star. А когда informer равно 1, то в sfId_Target.

Но у меня почему-то пропускает один клик и записывает со второго. Подскажите, где я ошибся?
$(function() {

    $(document).ready(function() {

 var informer = 0;
 var sfId_Start
 var  sfId_Target

console.log(informer) 

 $('td').click(function(){
    init()
    ++informer;
    if (informer >  1) {informer = 0}


//  if (informer === 1 ) {   }
     console.log(informer) 

});

function init(){

$('td').click(function() {
getId(this);
});

function getId(obj)
{

var  idsf 
if (informer === 0 ) {idsf = $(obj).attr('id')  }
if (informer  === 1 ) {idsf = $(obj).attr('id') }

sfId_Start = idsf
sfId_Target = idsf
}
}
})
});
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
В вашем коде так много ошибок и нелогичностей, что трудно понять, чего вы хотите добиться.
Вам нужно что-то вроде этого?

code review
// $(function(){}) и $(document).ready(function(){}) одно и то же
// Нет смысла вкладывать их друг в друга
$(function () {
    $(document).ready(function () {

        // Если informer может принимать только значения 0 и 1,
        // гораздо логичнее сделать эту переменную булевой
        var informer = 0;
        
        // Крутые парни ставят точки с запятой в конце выражений
        // Конечно, если не хотят потом ловить баги automatic semicolon insertion по ночам
        var sfId_Start
        var sfId_Target

        console.log(informer)

        // Зачем у td два обработчика клика?
        $('td').click(function () {
            init()
                
            ++informer;
            if (informer > 1) {
                informer = 0
            }


            //  if (informer === 1 ) {   }
            console.log(informer)

        });

        function init() {

            // Зачем делать анонимную функцию, в которой просто вызывается другая функция?
            $('td').click(function () {
                getId(this);
            });

            // Зачем эта функция сюда вложена?
            function getId(obj) {

                var idsf
                                
                // Этот код не имеет смысла
                // Почему при любом условии в переменную idsf пишется одно и то же значение?
                if (informer === 0) {
                    idsf = $(obj).attr('id')
                }
                
                // Зачем проверять, что 1 не равно 0?
                if (informer === 1 && informer !== 0) {
                    idsf = $(obj).attr('id')
                }

                // Зачем писать одно и то же в обе переменные?
                sfId_Start = idsf
                sfId_Target = idsf
            }
        }
    })
});

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы