2017-04-19 2 views
1

나는이 오후 내내 어려움을 겪었으므로 도움없이 더 이상 진행할 수 없습니다.조건이 거짓 일 때도 코드가 실행됩니다.

스트레이트 포인트입니다. 나는 그것이 새로운 변수를 설정하는 반면, 입력 필드에 약간의 변화가없는 한 정확하게 위의 코드는 if 문 진행할 것을 이해한다면

// On document ready 
$(function() { 
    var stop = false; 
    $('#update-cart :input').on('change input', function() { 
     // Here you go 
     stop = true; 
    }); 

    if (stop === false) { 
     // For some(silly) reason It gets executed on input field change 
    } 
}); 

. 따라서 if 조건은 false로 유지됩니다. 조건이 거짓 일 경우 왜 실행되는지 이해할 수 없습니다. 실종되거나 뭔가 잘못하고있는 것 같습니다.

+1

'stop = true'는 이벤트 처리기 안에 있습니다. 입력 내용이 변경 될 때만 실행됩니다. 따라서 코드는 다음과 같습니다. 1 set stop = false, 2 나중에 실행할 이벤트 처리기를 시작합니다. 3 stop이 false인지 확인합니다. 이는 분명히 –

+1

입니다. 처음에는 항상 false이고 if 조건 .... 만약 당신이 단지 변화에 대한 평가를 원한다면, 내부의 if 문을 옮기십시오. – DaniP

+1

@DaniP 감사합니다! 나 둘 다 필요해. –

답변

5

코드 에만 해당 이벤트가 발생하면 처리기가 실행되고 다시 실행됩니다.

  1. stop 변수를 만들고 false로 설정 :

    여기에 코드가에서 실행 순서입니다.

  2. 훅크 업 changeinput 처리기.

  3. if (stop === false)을 확인하십시오. 사실이므로 if의 코드에서 코드를 실행하십시오.

  4. 나중에 값이 변경 될 때마다 stoptrue으로 설정하십시오. 3 단계에서 실행 된 코드에는 아무런 영향이 없습니다.

+0

나는 또한 콘솔에 프로세스를 로깅하고 있었는데 이것이 순서입니다. 'if' 문 실행을 멈추는 방법에 대한 포인터 나 임시 해결책? –

+1

@'if' 문은 계속 실행되지 않고, ** once **를 실행합니다.이 함수는 jQuery'ready' 작업에 의해 호출됩니다. 다른 시간에 호출되도록하려면 코드를 이동하십시오. 'ready'가 * 변경 될 때마다 ** 실행될 필요가 있다면, 함수에 넣고 그 함수를 두 곳에서 호출하는 것이 좋습니다. –

관련 문제