2017-06-12 65 views
0

我在寫一個web應用程序,它使用php從MYSQL數據庫中提取數據。那邊沒問題。所選數據用於最終創建顯示體育鍛煉的SVG圖像以進行輔導。到目前爲止效果很好。 現在我希望能夠使用SVG「onMouseOver」鼠標從嵌入式svg代碼調用Javascript函數來顯示關於練習的輔導點的文本信息。 svg代碼嵌入在php sprintf函數中。將嵌入SVG的PHP變量傳遞給Javascript函數

$ID="E".$yourArray[$y-1]['ExerciseID']; 
echo "Exercise ID is....". $ID."<br>"; 

$tablesvg=$tablesvg .sprintf('<use xlink:href="#table" id="%3$s" onMouseOver="showID()" fill="beige" x="%1$d" y="%2$d"/>',$tb1xcoord, $tbycoordoffset,$ID); 

問題是沒有數據從php變量顯示在下面顯示的javascript函數中。警報文本顯示時功能穩定。

<script type="text/JavaScript"> 

    function showID() 
    { 
    var jsvar = '<?php echo $ID;?>'; 
    var test=document.getElementById(jsvar).getAttributeNS(null,"fill"); 
    alert("Exercise ID is:" + test); 
    } 
</script> 

只要我不嘗試通過PHP變量,它的工作 - 在JS功能的DOM部分作品,如果我硬編碼值(E1)。

+0

是對代碼輸出PHP函數中的Javascript?函數是否具有'全局$ ID;'? – Barmar

+0

設置'$ ID'的代碼是否在數組中循環?你使用'$ yourArray [$ y-1]'似乎暗示了它。您期望'$ ID'在Javascript中保留哪個值? – Barmar

+0

最初是的,但是當它不起作用時,我在Javascript區域中隔離了函數。 – Charlie

回答

0

傳遞元件作爲參數傳遞給該函數,而不是使用ID從可變,然後調用getElementById

$ID="E".$yourArray[$y-1]['ExerciseID']; 
echo "Exercise ID is....". $ID."<br>"; 

$tablesvg=$tablesvg .sprintf('<use xlink:href="#table" id="%3$s" onMouseOver="showID(this)" fill="beige" x="%1$d" y="%2$d"/>',$tb1xcoord, $tbycoordoffset,$ID); 

然後改變JS到:

<script type="text/JavaScript"> 

    function showID(elt) 
    { 
    var test=elt.id; 
    alert("Exercise ID is:" + test); 
    } 
</script> 
+0

Wicked - 工作。非常感謝,希望我現在可以繼續前進。使用某種形式的懸停來顯示文本會簡化應用程序,而不是像當前一樣提醒。困難的部分是混合所有的技術 – Charlie