我有这个javascript...
window.writeText = function(form) {
var text;
form.catnumber2.value = "PING";
text = document.getElementByName('cat2Number').innerHtml;
return alert(text);
};
但我没有得到预期的警报框。
当我通过view/developer/view source查看源代码时,svg没有显示(我在chrome中),但当我使用view/developer/developer工具时,我可以看到下面的svg....
<svg height="594">
<g ID="MasterG">
<text name="cat2Number">"$1234"</text>
</g>
</svg>
你知道我做错了什么吗?为什么我在“查看源代码”中看不到svg代码,但在“开发者工具”中却可以看到?这是我的问题的原因吗?这是我的警告框不能发出警告的原因吗?
5条答案
按热度按时间5kgi1eie1#
经过几秒钟的谷歌搜索,找到了这个https://stackoverflow.com/a/9602772/1217408
我创建了这个使用
textContent
的JSFiddle示例:http://jsfiddle.net/hVyTJ/1/原始的http://jsfiddle.net/hVyTJ/使用标准的DOM遍历从根SVG元素到达文本元素,而更新直接通过ID指向文本元素。
对于查找属性值,您可以使用
getAttributeNS
,如下所述:http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/编辑:
正如Phrogz所指出的,一个简单的
getAttribute
调用通常就足够了,阅读评论了解更多细节。0md85ypi2#
可以调用
text()
来返回svg:text
元素的文本内容。x4shl7ld3#
不用再多说了:
获取SVG元素:
从SVG中获取内部文本:
xienkqul4#
只使用dom方法
ubby3x7f5#
对于只需要显示文本的用户,可以使用Selection API及其
Range
interface。简单地使用
.textContent
也会获取所有未显示的文本节点:由于SVG元素没有
innerText
属性,因此我们需要遍历所有文本节点,并检查选择它们时是否得到BBox。一个二个一个一个