2015-11-13 60 views
2

我有涉及一個按鈕,切換能見度XAMPP腳本不結轉到HTML文件

echo "<button onclick = \"toggle('showDetails')\">expand</button>" ; 

echo "<script type=\"text/javascript\">"; 
echo " function toggle(id) { \n"; 
echo "  var e = document.getElementById(id)\n"; 
echo "  if(e.style.display == 'block')\n"; 
echo "   e.style.display = 'none';\n"; 
echo "  else\n"; 
echo "   e.style.display = 'block';\n"; 
echo " }"; 
echo " </script>"; 

一個PHP文件,它運行完美我的PHP頁面上。但是當我進入調用我的php頁面的html頁面時,腳本不起作用。我試圖把我的腳本放在html頁面的頭部和html頁面的正文中,但無濟於事。我需要做什麼才能讓我的按鈕在html頁面上工作。

編輯: 這裏是showDetails元素:

echo "<div id =\"showDetails\" style=\"display:none\">" ; 
echo "<strong>client_address:</strong>" ; 
echo $client_address; 
echo "<br>" ; 
echo "<strong>client_date:</strong>" ; 
echo $client_date; 
echo "</div>" ; 

我也打開了我的html頁面,並使用谷歌Chrome檢查。當我點擊HTML頁面上的按鈕,我在控制檯中的錯誤:

未捕獲的ReferenceError:當您通過ajax式的方法調用這個文件php切換是沒有定義

+0

請將代碼添加到您的問題你在哪裏回顯需要切換的** showDetails **元素。 – trincot

+0

我用showDetails元素以及控制檯錯誤更新了我的問題。 –

回答

1

(使用XMLHttpRequest)並在您的現有頁面中注入響應innerHTMLjavacscript嵌入在script標記將不會執行。在你的情況下,這意味着toggle函數將永遠不會被定義。

有幾種方法來解決這個問題:

  • 定義在HTMLtoggle功能發出此http請求。這樣,具有此功能的script標記將從一開始就在那裏,並在頁面加載時執行。無關緊要的是,toggle函數只是坐在那裏,什麼都不做,直到你調用menu.php文件發回按鈕。它具有執行這樣的http請求執行無論是在嵌入式script標籤功能

  • 使用jQuery或類似的庫。

選擇第二個選項,你可以寫:

$("#menuDiv").load("menu.php"); 

還有一些其他的方式來實現這一點,我指的是many previous answers這個問題。

注意還存在是它打破了javascriptelse之前分號您if - else結構:

echo "   e.style.display = 'none';\n"; 

做,而不是:

echo "   e.style.display = 'none'\n"; 
+0

我仍然遇到同樣的問題。 –

+0

當我把你在[pdf fiddle light]中提供的所有代碼(http:// phpfiddle。org/lite),修正了分號,按鈕按預期工作。但是,對於「調用我的php頁面的html頁面」是什麼意思?也許我錯過了那裏的東西,因爲'html'是由'php'生成的。也許你是指另一個'html'頁面? – trincot

+0

我有一個html頁面文件。它調用一個PHP頁面,例如var menu = new XMLHttpRequest(); menu.onreadystatechange = function(){if(menu.readyState == 4 && menu.status == 200){document.getElementById(「menuDiv」)。innerHTML = menu.responseText; } } menu.open(「GET」,「menu.php」,true); menu.send(); –