JavaScript获得SVG的DOM

看这篇前,请先看下我的前两篇博文“SVG 图形嵌入html页面”和“在SVG中使用JavaScript”(篇幅较短)。

这篇的基础环境都在这两篇博文。

如果你之前用过JavaScript操纵过html的DOM,想必对document这个变量特别眼熟。

这里如果在JavaScript脚本中直接使用document的话,对应的不是html的DOM,而是SVG的。

有个注意点是:如果在脚本的开始就使用document,有时候document会是空。

我在网络上搜索一番,得到的解答是:因为svg需要绘制时间,如果过早使用document有可能得到空。

我找到两个解决办法,推荐第二种:

1.setTimeout("t()",1000);

等待1秒钟后调用方法t(),这是JavaScript代码,t()方法中包含的是需要运行的JavaScript脚本,当然也包含了对document的使用。

一秒钟,网络状况还可以的话,一般够SVG的绘制时间了。

2.<svg οnlοad="begin()" >

svg文档中的代码,在svg标签中加入(上面的代码去除了一些)οnlοad="init(evt)".

当svg加载好后就会调用init(evt)方法,这是一个JavaScript方法。

JavaScript脚本:

function init(evt) {
    svgDoc = evt.target.ownerDocument;
    svgRoot = svgDoc.rootElement;
}

 

evt指onload Event事件

SVG文档中,通过DOM操作动态修改元素的样式和属性是一个常用的技术。要掌握这一点,你可能需要深入理解SVG DOM中Node对象、Document对象和Element对象的用法。这里推荐你查看《SVG DOM学习笔记:Node、Document与Element对象解析》。这本书籍详细介绍了这些对象在SVG中的应用和操作方法。 参考资源链接:[SVG DOM学习笔记:Node、Document与Element对象解析](https://wenku.youkuaiyun.com/doc/4a5dq7dp48?spm=1055.2569.3001.10343) 通过Element对象,你可以直接访问和修改元素的属性。例如,如果你想改变一个SVG元素的填充颜色(fill),可以使用setAttribute方法。以下是一个示例代码,展示了如何动态改变一个圆形元素的填充颜色和半径: ```javascript // 获取SVG文档的document对象 var svgDoc = document.querySelector('svg').contentDocument || document.querySelector('svg').ownerDocument; // 查找特定的圆形元素 var circle = svgDoc.getElementById('myCircle'); // 修改圆形元素的填充颜色 circle.setAttribute('fill', '#ff0000'); // 修改圆形元素的半径 circle.setAttribute('r', '30'); ``` 在这个例子中,我们首先通过SVGdocument对象获取SVG文档的引用。然后,通过getElementById方法找到id为'myCircle'的圆形元素。最后,通过setAttribute方法更改了该元素的fill和r属性,从而改变其样式和尺寸。 此外,SVG DOM还支持事件处理,这意味着你可以为图形元素添加事件监听器,使得图形可以根据用户的交互行为作出响应。例如,可以使用addEventListener方法来监听点击事件,并执行相应的函数。 通过阅读《SVG DOM学习笔记:Node、Document与Element对象解析》这本书,你可以更深入地了解SVG DOM的层次结构、Node对象、Document对象和Element对象的属性和方法,以及如何将这些知识应用于实践,从而提升你的SVG编程技能。 参考资源链接:[SVG DOM学习笔记:Node、Document与Element对象解析](https://wenku.youkuaiyun.com/doc/4a5dq7dp48?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值