2016-12-01 6 views
0

PHP条件のみが満たされている場合、どのようにjavascriptを実行しますか? $page_count<= 1の場合にのみ、ポップアップを表示しようとしています。私は単純なエコーでそれをテストしたので、phpは正常で正常に動作しますが、$page_countが2以上でまだ実行されていれば、javascriptの実行を無効にしようとするときだけです。PHPの条件が満たされている場合にのみjavascriptを実行する

これについて一般的な方法はありますか?コメンターが示唆したように

if ($page_count <= 1) { 
    $setup_popup = 
    '<div id="status-popup"> 
     <div id="status-popup-container" class="total-center"> 
      <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
     </div> 
    </div>' 
    ; 
} 
else { 
    $setup_popup = NULL; 
} 

Javascriptを

$('#status-popup').fadeIn(350); 

$('[data-popup-close]').on('click', function(e) { 
    var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
    $('#status-popup').fadeOut(350); 
    $('body').css('overflow', 'auto'); 
    e.preventDefault(); 
}); 
+1

なぜカウンタを変数として渡してJSが決定するのはなぜですか? – ssube

+2

ページに 'status-popup'がない場合、jsはどのように動作しますか? –

+0

@ssubeわからない。 – Paul

答えて

1

、ような単純なもの:

if(document.getElementById('status-popup')){ 
    $('#status-popup').fadeIn(350); 

    $('[data-popup-close]').on('click', function(e) { 
     var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
     $('#status-popup').fadeOut(350); 
     $('body').css('overflow', 'auto'); 
     e.preventDefault(); 
    }); 
} 

はそれを行う必要があります。

文の場合は、必要な場合にも、PHPの内部ではJavaScriptを囲むことができます:

<?php 
if ($page_count <= 1) { 
?> 
     $('#status-popup').fadeIn(350); 

     $('[data-popup-close]').on('click', function(e) { 
      var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
      $('#status-popup').fadeOut(350); 
      $('body').css('overflow', 'auto'); 
      e.preventDefault(); 
     }); 
<?php 
} 
?> 
+0

最初の解決策は役に立たなかった。私は第二を試みます。 – Paul

1

私はいつもモーダル要素を追加しますが、カウンターを含め、JSは、ロジックをやらせるだろう。

<script type="application/javascript"> 
var pageCounter = <?php $page_count ?>; 
if (pageCounter) { 
    $('#status-popup').fadeIn(350); 

    $('[data-popup-close]').on('click', function(e) { 
    var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
    $('#status-popup').fadeOut(350); 
    $('body').css('overflow', 'auto'); 
    e.preventDefault(); 
    }); 
} 
</script> 
<div id="status-popup"> 
    <div id="status-popup-container" class="total-center"> 
    <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
    </div> 
</div> 

魔法はなく、複雑さはほとんどなく、クライアントやサーバからの値の変更やテストが可能です(単体テストやAJAXなどの小さなことは許されません)。

+0

それでは、(pageCounter = <1){'ならば、pageCounter条件を= <1'に設定しますか? – Paul

+0

'if(pageCounter)'を任意の条件に変更できます。 – ssube

+0

このソリューションは常に静的なHTMLを残しませんか?私は、条件が満たされている場合にのみhtmlが表示されるようにします。 – Paul

1

PHPコードは、あなたができるように、クライアントにtransmitedされ、それの結果より、サーバーで実行されます。

if ($page_count <= 1) { 
    $setup_popup = ""; 
    if ($page_count >=2) { 
     $setup_popup .= "<script type="text/javascript">[put your js code here]</script>"; 
    } 
    $setup_popup .= '<div id="status-popup"> 
     <div id="status-popup-container" class="total-center"> 
      <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
     </div> 
    </div>'; 
} 
else { 
    $setup_popup = NULL; 
} 
0
var page_count = <?= $page_count ?>; 

if(page_count <= 1) { 
    $('#status-popup').fadeIn(350); 
    $('[data-popup-close]').on('click', function(e) { 
     var targeted_popup_class = jQuery(this).attr('data-popup-close'); 
     $('#status-popup').fadeOut(350); 
     $('body').css('overflow', 'auto'); 
     e.preventDefault(); 
    }); 
} 

あなたはあなただけ表示するようになるだろうので、else条件を使用する必要はありませんページ数が2未満のときにポップアップ。それが動作することを願っています。

関連する問題