其實對於javascript並沒有很了解,但最近在寫同事網頁的副導覽列,同事說副導覽列需要是是動態的,因為是農業網站,之後蔬菜水果可能會隨季更改。
    而副導覽列是設定為三層,一層10個選項來寫。所以都是從後端輸入後再從前端來抓。但因為抓出來的一定都是變數。因此必須要讓javascript的document.getElementById(變數).style.display=""這個句子去處理按下第一層時第二層顯現,按第二層第三層顯現。就一直卡在沒辦法把php從資料庫中抓出來的每一層的變數傳給javascript。上網查資料之後,赫然發現其實可以用很簡單的方式來傳。

$sql="select * from secondbanner order by Number desc";
把第一層的資料從資料庫中抓出
$result1=mysql_query($sql,$link);
這是php連mysql
$result2=mysql_num_rows($result1);
抓出總共有幾個第一層資料
$i=0;
ex:for($i=0;$i<$result2;$i++){

mysql_data_seek($result1,$i);
使用迴圈並用mysql_data_seek()句子把目標移往第i筆資料

$a='F1S1'.$i;
設立變數$a,這個$a是用在第二層的div的id,下方並未列出第二層div的內容

echo "<Script>"; 
    echo "
    function $a($a){
    document.getElementById('$a').style.display='';
    }";
echo "</Script>";
<script>也是包在這個迴圈之中,因為需要每一個onmouseover()就有一個function去對應。     
<div id=<?php echo ($F1.$i);?> onmouseover='<?php echo $a; ?>(<?php echo $a; ?>)'    style='background-color:#0099CC' >
這個div是第一層的,onmouseover時要顯示第二層的項目,而第二層的所有項目是用一個大的div包起來的,id是$a),這個第一層的div用一般的寫法就是<div id="就id"  onmouseover='aa($a)')
.............................................(以下省略)
}

因此只要用很單純的(<?php echo $a; ?>)就可以把php的變數傳給javascript。而把函式的名稱也用<?php echo $a; ?>變數來取是因為迴圈如果產生的函式名稱一樣會造成錯誤。

   

創作者介紹
創作者 有關於網頁設計和程式.... 的頭像
ray730727

有關於網頁設計和程式....

ray730727 發表在 痞客邦 留言(0) 人氣( 1927 )