2017-06-12 27 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