[英]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.