我对 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 (evaluating 'svg.attr("viewBox", "0 0 "+ w + ""+ h)')"。
我还尝试在使用 svg
变量的每个地方使用 $("#svg")
。但是,这给了我错误“TypeError:‘undefined’不是一个函数(评估‘$("#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 语法混淆了,但在我看来,这就像在 Javascript 变量中保存 html 元素的简单问题。这是正常的事情吗?如果是这样,正确的语法是什么?如果没有,我应该做什么?
最佳答案
那是因为 attr()
是 jQuery method ,并且您第一次并没有在 jQuery 对象上调用它。
关于javascript - 在 JQuery 中将元素保存为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16994349/