以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  为svg中的每个元素都添加svg事件,问题啊  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=60396)


--  作者:selong
--  发布时间:3/24/2008 10:44:00 PM

--  为svg中的每个元素都添加svg事件,问题啊
想为svg中的每个元素都增加一个click事件。目的是想在ie中click每个元素时设置一些属性信息。

svg文件代码如下:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd">
<!-- Created by SVGDeveloper 1.0 -->
<svg width="640" height="480" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="Init(evt)">
  <script><![CDATA[
  
  function Init(evt)
  {
   var SvgDoc = evt.target.ownerDocument;
    
     var node = SvgDoc.rootElement;
     var child;       
     
     for(var i=0;i<node.childNodes.length;i++)
     {
    
       child = node.childNodes.item(i);
       alert(child.nodeName + ' type ' + child.nodeType);
       
                // 下面出错,估计是找不到child,还是怎么回事
       child.addEventListener("click", AlertMsg, false);
     }
  }
  
  function AlertMsg(evt)
  {
   var target = evt.target;
   if (target.getAttribute("id"))
   {
    alert(target.getAttribute('id'));
    }
  }
  ]]>
  </script>
<path id="123" d="M125 79C139 90 139 90 139 90C139 153 139 153 139 153" fill="#FFFFFF" stroke="#000000" transform="matrix(1,0,0,1,35,0)">
<animateTransform attributeName="transform" begin="0" dur="1" fill="freeze" additive="sum" from="132 116" to="132 116" type="translate" />
<animateTransform attributeName="transform" begin="0" dur="1" fill="freeze" additive="sum" from="1 1" to="5.31 1.47" type="scale" />
<animateTransform attributeName="transform" begin="0" dur="1" fill="freeze" additive="sum" from="-132 -116" to="-132 -116" type="translate" />
</path>
</svg>

拜托各位大侠帮忙解决下


--  作者:DragonJohn
--  发布时间:3/25/2008 3:07:00 PM

--  
学习一下<g>元素
--  作者:定风波
--  发布时间:4/6/2008 12:16:00 PM

--  
好人啊
--  作者:zoulixing
--  发布时间:4/7/2008 4:20:00 PM

--  
child = node.getChildNodes.item(i);
好象i只能是奇数1,3,5分别表示1,2,3元素标签
--  作者:gukaiyun
--  发布时间:4/11/2008 10:22:00 AM

--  
继续学习!
--  作者:zpjdgp888
--  发布时间:4/11/2008 7:40:00 PM

--  
if(child.nodeName == "path" ||
   child.nodeName == "text" ||
   ...
   child.nodeName == "rect")
{
child.addEventListener("click", AlertMsg, false);
}

比如一个标签是这样写的
<text>
asdadf
</text>

会被识别会是几个子节点,所以一定要判断是不是需要增加事件的节点


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
5,015.625ms