Ваша строка не работает правильно: <code class="javascript">if ( id != 451 || id != 791 )</code>. Можете объяснить, в чем заключается проблема? Я заметил, что когда используется только одно условие, например, <code class="javascript">if ( id != 451 )</code>, код выполняется как ожидается. Однако, если используют оба условия, попап появляется для всех вариантов значений. <br/> В приложенном коде: <pre><code class="javascript"><script type="text/javascript"> jQuery(document).ready(function(){ document.addEventListener( 'wpcf7mailsent', function( event ) { var id = event.detail.contactFormId; if ( id != 451 || id != 791 ) { jQuery.fancybox.defaults.closeExisting = true; jQuery.fancybox.open('<div class="popap ok-send">тут текст</div>'); } }, false ); }); </script></code></pre> <br/> Можете подсказать, в чем может быть ошибка?
Проблема в вашем условии заключается в использовании логического оператора "или" (`||`). В текущем варианте: ```javascript if ( id != 451 || id != 791 ) ``` Условие всегда будет истинным, потому что одно из условий всегда выполняется. Например, если `id` равен `451`, то `id != 791` будет истинным, а если `id` равен `791`, то `id != 451` будет истинным. Таким образом, условие будет истинным для всех значений `id`, кроме `451` и `791`, что и приводит к тому, что попап открывается для всех остальных значений. Чтобы ваше условие работало правильно, вам нужно использовать логический оператор "и" (`&&`), чтобы проверять, что `id` не равно ни одному из двух значений: ```javascript if ( id != 451 && id != 791 ) ``` Ваш правильно измененный код будет выглядеть так: ```html <script type="text/javascript"> jQuery(document).ready(function(){ document.addEventListener( 'wpcf7mailsent', function( event ) { var id = event.detail.contactFormId; if ( id != 451 && id != 791 ) { jQuery.fancybox.defaults.closeExisting = true; jQuery.fancybox.open('<div class="popap ok-send">тут текст</div>'); } }, false ); }); </script> ``` Теперь попап будет открываться только для всех форм, кроме тех, у которых значение `id` равно `451` или `791`.
if ( id != 451 || id != 791 )
замени на
if ( (id != 451) && (id != 791) )
Дело в том, что оператор || (логическое "или") означает, что условие будет истинным, если хотя бы одно из выражений истинно. То есть, для каждого id он всегда будет соответствовать одному из условий.
Например:
Если id равно 451, то id != 791 будет истинным.
Если id равно 791, то id != 451 будет истинным.
Если id не равно ни одному из них, то оба условия будут ложными, и условие сработает.