簡體   English   中英

從PHP調用JS函數不起作用

[英]Calling JS function from PHP not working

使用用戶在上一個問題中推薦的方法,我僅使用一個文檔(index.php)來顯示不同的內容,而不是為每個文檔創建一個文件。

這是代碼:

HTML

<a href="index.php">Home</a>
<a href="?id_page=1">More info</a>
<a href="?id_page=2">Contact Us</a>


<div id="index">...index content...</div>
<div id="more_info">...more info content...</div>

JS

$(document).ready(function(){
    function more_info(){
        $('#index').hide();
        $('#more_info').show();
    }
});

PHP

<?php
    if (isset($_GET['id_page'])) {
        $id = $_GET['id_page'];
        if ($id == 1) {
            ?>
            <script>
                more_info();
            </script>
            <?php
        }
    }
?>

那不行 但是如果我改變<script> more_info(); </script> <script> more_info(); </script>用於:

<script>
    $(document).ready(function(){
        $('#index').hide();
        $('#quienes-somos').show();
    });
</script>

有用。 為什么是這樣?

您似乎遇到的問題是因為您要在函數內部定義more_info函數。 這使它超出了全局范圍,這將使該功能只能在文檔就緒功能內部訪問,而不能在任何地方訪問。

//more_info is now available globally
function more_info(){
    $('#index').hide();
    $('#more_info').show();
}

$(document).ready(function(){
    //document ready code here
});

從PHP輸出JS函數時,這應該使more_info執行。 還要注意的是,由於您尚未准備好執行該函數,因此需要確保html可用於JS進行修改。 通常最好的做法是將所有JS放在結束標記之前。 這樣可以確保您的html盡快加載,並且JS始終可以訪問您嘗試編輯的HTML。 在head標簽中使用JS時,您需要使用以下方法確保在正確的時間調用JS:

$(function() {
});

要么

$(document).ready(function() {
});

要么

$(window).load(function() {
});

所有這些方法在頁面初始化期間的不同時間執行。 在head標簽中使用JS后,您的瀏覽器需要先將所有JS下載到客戶端,然后才能開始呈現HTML,這也將增加從訪問站點到實際訪問站點的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM