zoukankan      html  css  js  c++  java
  • svg动态添加元素

    动态添加元素

    <html>
    <head></head>
    <body>
    <div>x坐标值<input id="xValue"></div>
    <div>y坐标值<input id="yValue"></div>
    <div>文本内容<input id="iText"></div>
    <button id="add">动态添加元素</button>
    <br/>
    <iframe id="mySVG" src="map.svg" style="100%;height:400px;"></iframe>
    </body>
    <script src="jquery.min.js"></script>
    <script>
    	var svgDoc = null;
    	var time = null;
     
    	// 动态添加元素
    	var addElement = function(x, y, nodeText) {
    		// 添加圆形
    		var c = svgDoc.createElementNS('http://www.w3.org/2000/svg', 'circle');
    		c.setAttribute('cx', x);
    		c.setAttribute('cy', y);
    		c.r.baseVal.value = 7;
    		c.setAttribute('fill', 'red');
    		c.addEventListener("click", function() {
    			alert('圆形点击测试:' + nodeText);
    		});
    		c.addEventListener("mouseover", function() {
    			console.log('圆形鼠标悬停测试:' + nodeText);
    		});
    		svgDoc.rootElement.appendChild(c);
     
    		// 添加文本
    		var t = svgDoc.createElementNS('http://www.w3.org/2000/svg', 'text');
    		t.setAttribute("x", parseInt(x) + 5);
    		t.setAttribute("y", parseInt(y) + 10);
    		t.setAttribute("font-size", "20");
    		t.setAttribute('fill', 'green');
    		t.addEventListener("click", function() {
    			alert('文本点击测试:' + nodeText);
    		});
    		t.addEventListener("mouseover", function() {
    			console.log('文本鼠标悬停测试:' + nodeText);
    		});
    		t.innerHTML = nodeText;
    		svgDoc.rootElement.appendChild(t);
    	};
     
    	// 载入SVG
    	var loadSvg = function() {
    		svgDoc = document.getElementById("mySVG").contentWindow.document;
    		if(svgDoc == null) {
    			time = setTimeout("loadSvg()", 300);
    		} else {
    			clearTimeout(time);
    			loadCallback();
    		}
    	};
     
    	// 载入回调
    	var loadCallback = function() {
    		console.log("加载完成");
    	};
     
    	$(function() {
    		// 延迟加载
    		setTimeout("loadSvg()", 300);
     
    		// 按钮
    		$("#add").click(function() {
    			var nodeText = $("#iText").val();
    			if(nodeText == "") {
    				nodeText = "未输入文本";
    			}
    			console.log(nodeText);
    			addElement($("#xValue").val(), $("#yValue").val(), nodeText);
    		});
    	});
    </script> 
    </html>
    

     map.svg

    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2377" height="2867"><defs>
        <style type="text/css">
          @font-face {
            font-family: 'topology';
            src: url('http://at.alicdn.com/t/font_1331132_h688rvffmbc.ttf?t=1569311680797') format('truetype');
          }
        </style>
      </defs><g/></svg>
    

      

  • 相关阅读:
    TSQL语句 创建表
    数据库设计
    WampServer
    表单验证之相等验证
    表单验证之非空验证
    遗忘的知识点
    JavaScript函数
    JS之数组
    JS的分支与循环语句
    JavaScript基础语法要点总结
  • 原文地址:https://www.cnblogs.com/guohu/p/13261366.html
Copyright © 2011-2022 走看看