2016-12-01 89 views
0

如果只滿足php條件,如何運行javascript?我試圖僅在$page_count<= 1時才顯示彈出窗口。 PHP很好,運行正確,因爲我用簡單的回聲測試它,它只是當我試圖否定運行的JavaScript,如果$page_count超過2,這仍然運行。只有在滿足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

如果在頁面上沒有「狀態彈出」功能,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(); 
    }); 
} 

應該這樣做。

你也可以附上JavaScript中的PHP內,如果如果有必要聲明:

<?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'if if(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時彈出。希望它有效。

相關問題