Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';javascript代码是否不适用于svg对象?_Javascript_Html_Css_Svg - Fatal编程技术网

为什么不是';javascript代码是否不适用于svg对象?

为什么不是';javascript代码是否不适用于svg对象?,javascript,html,css,svg,Javascript,Html,Css,Svg,我不熟悉在html文档中使用svg。从基础开始,我将通过一个对象标记加载一个svg文件,然后通过javascript操作svg对象的一部分。 代码如下: addEventListener(“加载”,函数(){ document.getElementsByClassName(“节点”); var a=document.getElementById(“node1”); a、 setAttribute(“填充”、“红色”); }); 所选框应具有红色字体。 对象元素内容位于各自单独的文档中 ad

我不熟悉在html文档中使用svg。从基础开始,我将通过一个对象标记加载一个svg文件,然后通过javascript操作svg对象的一部分。 代码如下:


addEventListener(“加载”,函数(){
document.getElementsByClassName(“节点”);
var a=document.getElementById(“node1”);
a、 setAttribute(“填充”、“红色”);
});
所选框应具有红色字体。


对象元素内容位于各自单独的文档中


addEventListener(“加载”,函数(){
让doc=document.getElementById(“svg对象”).contentDocument;
var a=doc.getElementById(“node1”);
a、 setAttribute(“填充”、“红色”);
});

不幸的是,这是不可能的,您不能使用外部css设置对象svg的样式styles@svyatis.lviv我关注了一些视频,例如,其中显示可能是关于内联SVG样式的教程,而不是通过对象标记包含的SVG样式,这正是您试图做的。@RobertLongson感谢您的帮助,我想它应该还能用。我现在已经尝试使用javascript,但仍然得到一个错误(相应地编辑了我的问题)。您需要获取对象元素的文档并使用它,这是一个不同的文档。可能是因为node1的颜色被其子节点作为对所解释问题的注释者所覆盖。
标记没有任何我可以使用的id或类,如果我实际为它创建了一个id或类,它会破坏总体目标,因为我不需要编辑svg文件。您还有其他可行的想法吗?您可以通过element.children遍历组的子级,直到找到正确的子级。但是,如果您拒绝编辑SVG文档,您的一只手就被绑在背后游泳。
  <script type="text/javascript">
    window.addEventListener("load", function() {
      let doc = document.getElementById("svg-object").contentDocument;
      var a = doc.getElementById("node1");
      a.setAttribute("fill","red");
    });
  </script>