Scripting svg脚本的问题
我正在尝试在我拥有的svg文档中使用一些基本的ecma脚本Scripting svg脚本的问题,scripting,svg,ecmascript-5,Scripting,Svg,Ecmascript 5,我正在尝试在我拥有的svg文档中使用一些基本的ecma脚本 <svg contentScriptType="text/ecmascript" width="957px" xmlns:xlink="http://www.w3.org/1999/xlink" zoomAndPan="magnify" contentStyleType="text/css" viewBox="-2998 -1920 6580 5780" height="841px" preserve
<svg contentScriptType="text/ecmascript" width="957px"
xmlns:xlink="http://www.w3.org/1999/xlink" zoomAndPan="magnify"
contentStyleType="text/css" viewBox="-2998 -1920 6580 5780" height="841px"
preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg"
version="1.1" onload="init(evt)"">
<script type = "text/ecmascript">
<![CDATA[
function init(evt) {
if (window.svgDocument == null) {
svgDoc = evt.target.ownerDocument;
}
}
function displayName(name) {
svgDoc.getElementById("node_name").firstChild.data = name;
}
]]> </script>
<text class = "label" id = "node_name" x="10" y="390"></text>
<circle fill-opacity="0.2" fill="#3ccb5d" r="40.0" cx="1568.2628"
class="46960" cy="-1518.6278" stroke="#000000"
stroke-opacity="0.5" stroke-width="1.0"
onmouseover="displayName('Showing Nodes')"/>
</svg>
好的,所以我设法找到了答案,但这太违反直觉了,我觉得我真的应该把它贴在这里。显然,这不起作用的原因是,如果文本标记之间没有任何内容,则其数据将被视为null而不是空的
Broken Code:
<text class = "label" id = "node_name" x="10" y="390"></text>
getElementById('node_name').firstChild == null
Working Code:
<text class = "label" id = "node_name" x="10" y="390"> </text>
getElementById('node_name').firstChild == " "
断开的代码:
getElementById('node_name')。firstChild==null
工作代码:
getElementById('node_name')。firstChild==“”
好的,所以我设法找到了答案,但这太违反直觉了,我觉得我真的应该把它贴在这里。显然,这不起作用的原因是,如果文本标记之间没有任何内容,则其数据将被视为null而不是空的
Broken Code:
<text class = "label" id = "node_name" x="10" y="390"></text>
getElementById('node_name').firstChild == null
Working Code:
<text class = "label" id = "node_name" x="10" y="390"> </text>
getElementById('node_name').firstChild == " "
断开的代码:
getElementById('node_name')。firstChild==null
工作代码:
getElementById('node_name')。firstChild==“”
您应该真正使用textContent,无论节点是否有子节点,它都会起作用,例如
function displayName(name) {
svgDoc.getElementById("node_name").textContent = name;
}
您应该真正使用textContent,无论节点是否有子节点,它都会起作用
function displayName(name) {
svgDoc.getElementById("node_name").textContent = name;
}
哦,太棒了。谢谢你的提示。知道在哪里可以找到svg脚本的好文档吗?对所有事情来说都是一个好的开始,SVGOh,真棒。谢谢你的提示。知道在哪里可以找到svg脚本的好文档吗?这是所有事情的良好开端