我对 Javascript 和 JQuery 还很陌生,我对我认为简单的问题有疑问。我正在制作一个由单个 html 页面、一个 css 样式表和一个 Javascript 文件组成的网站,该文件从某个地方检索数据并使用 d3.js 绘制一个网络。我的 html 中有一个 SVG 元素,我需要从 Javascript 访问它以更改其属性并在其中绘制。我最初是在我的 JQuery 中创建 SVG 元素并将返回值保存为我以后可以使用的变量。但是,这有点难看,因为每次我想绘制新网络时都必须删除并重新添加 SVG。
所以现在我已经将 SVG 元素添加到 html 中,并让布局与窗口大小调整配合得很好。但是,我似乎无法从 JQuery 轻松访问它。我试过这样的事情:
var svg = document.getElementById("svg");
svg.attr("viewBox", "0 0 " + w + " " + h)
.attr("preserveAspectRatio", "XMidYMid")
.attr("width", w)
.attr("height", h);
但是,在 处svg.attr(...)
,我收到错误“TypeError: 'undefined' is not a function (evalating 'svg.attr("viewBox", "0 0" + w + " " + h)')"。
我还尝试在使用该变量$("#svg")
的每个地方使用。svg
但是,这给了我错误“TypeError: 'undefined' is not a function (evaluateing '$("#svg").append("svg:defs").selectAll("marker")')”。奇怪的是,它之前的函数调用,
$("#svg").attr("viewBox", "0 0 " + w + " " + h)
.attr("preserveAspectRatio", "XMidYMid")
.attr("width", w)
.attr("height", h);
......跑得很好。
我不确定我是否将 d3 语法与 JQuery 和 Javascript 语法混淆了,但在我看来,将 html 元素保存在 Javascript 变量中是一个简单的问题。这是正常的事情吗?如果是这样,正确的语法是什么?如果没有,我应该怎么做?