javascript 动态改变svg图形

//嵌入svg       

 <div id="svgcontainter" style="width: 760px; height: 600px;overflow: hidden;">
            <embed height="600" width="760" type="image/svg-xml" name="svgEmbed" id="svgEmbed"
                src="ksh.svg" pluginspage="http://www.adobe.com/svg/viewer/install/"></embed>
        </div> 

 

//javascript操作svg    ajax 回调函数

function callback(res)

{

svgstring=res.value;

svgViewer = document.getElementById("svgEmbed");
SVGDoc = svgViewer.getSVGDocument();
SVGRoot = SVGDoc.documentElement;
chart = SVGDoc.getElementById("chart");//svg文档中定义的<g>元素

//删除已有节点
var j = chart.firstChild;
        while (j) {
            j.parentNode.removeChild(j);
            j = chart.firstChild;
        }

//动态解析svgstring
       var new_node = svgViewer.window.parseXML(svgstring, SVGDoc);
        var svgNode = new_node.childNodes.item(0);
        var node = svgNode.childNodes;

//添加元素
        for (var i = 0; i < node.length; i++) {
            var defsElements = node.item(i).childNodes
            for (var j = 0; j < defsElements.length; j++) {
                var node_clone = defsElements.item(j).cloneNode(true);
                chart.appendChild(node_clone);
            }
        }

 

//为svgcontainter添加mousewheel事件

var svgcon = document.getElementById("svgcontainter");     
if (svgcon.addEventListener) svgcon.addEventListener('DOMMouseScroll', wheel, false);
svgcon.onmousewheel = wheel;

}

 

 

function zoomInOut(delta) {
    if (delta >= 0) {
        SvgZoomIn();
    } else SvgZoomOut();
}

function wheel(event) {
    var delta = 0;
    if (!event) event = window.event;
    if (event.wheelDelta) {
        delta = event.wheelDelta / 120;
        if (window.opera) delta = -delta;
    } else if (event.detail) {
        delta = -event.detail / 3;
    }
    // else
    // delta = event.wheelDelta ? (event.wheelDelta / 120) : (- event.detail / 3); // Firefox using `wheelDelta` IE using `detail`
    if (delta) zoomInOut(delta);
    if (event.preventDefault) event.preventDefault();
    event.returnValue = false;
}
function SvgZoomOut() //放大
{
    SVGRoot.currentScale = SVGRoot.currentScale * 1.1;
    originscale = originscale * 1.1;
}
function SvgZoomIn() //缩小
{
    SVGRoot.currentScale = SVGRoot.currentScale / 1.1;
    originscale = originscale / 1.1;
}
function Zoom() //原始大小
{
    originscale = 600/maxx>600/maxy?600/maxy:600/maxx;
    SVGRoot.currentScale =originscale;
}

 

function showJh() {
 var svgViewer = document.getElementById("svgEmbed");
 var SVGDoc = svgViewer.getSVGDocument();
 var Jhs=SVGDoc.getElementsByTagName("text");
 if (document.getElementById("Checkbox1").checked==true)
  {
     for(var i=0;i<Jhs.length;i++)
     {
       var currentTxt=Jhs.item(i);
       if (currentTxt.getAttribute("visibility")=="hidden")
       {
          currentTxt.setAttribute("visibility","visible");
       }
     }
   }
   if (document.getElementById("Checkbox1").checked==false)
  {
     for(var i=0;i<Jhs.length;i++)
     {
       var currentTxt=Jhs.item(i);
       if (currentTxt.getAttribute("visibility")=="visible")
       {
          currentTxt.setAttribute("visibility","hidden");
       }
     }
   }  
 }

 

 

function move()
 {
  // strtranlate="translate("+tx+","+ty+")";
    //chart.setAttribute("transform",strtranlate);
   SVGRoot.currentTranslate.x=tx;
   SVGRoot.currentTranslate.y=ty;
 }
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值