未捕获的引用错误:$$ 未定义。

3

我正在尝试以编程方式创建一个饼图,希望将其转换为React组件以供重用。基本上,我需要一个可点击的饼图,每个部分在单击时都会展开成整个饼图。我试图遵循这个教程来制作饼图,并且在底部,我有一段JS代码,我试着测试了它。结果出现了Uncaught Reference Error: $$ is not defined.这是错误消息的截图。

enter image description here

我的理解是这不是jQuery而是纯粹的Vanilla JS。我不确定这是真的。我通过CDN导入了jQuery,但仍然收到相同的错误。我阅读了这篇SO post,我想$$只是一种变量名称表示法。

这是我在index.html中拥有的代码,没有什么突破性的。

<body>
  <div class="pie">20%</div>
  <div class="pie">60%</div>
  <script src="https://code.jquery.com/jquery-2.2.4.js" integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI=" crossorigin="anonymous"></script>
  <script type="text/javascript">
    $$('.pie').forEach(function(pie) {
      var p = parseFloat(pie.textContent);
      var NS = "http://www.w3.org/2000/svg";
      var svg = document.createElementNS(NS, "svg");
      var circle = document.createElementNS(NS, "circle");
      var title = document.createElementNS(NS, "title");
      circle.setAttribute("r", 16);
      circle.setAttribute("cx", 16);
      circle.setAttribute("cy", 16);
      circle.setAttribute("stroke-dasharray", p + " 100");
      svg.setAttribute("viewBox", "0 0 32 32");
      title.textContent = pie.textContent;
      pie.textContent = '';
      svg.appendChild(title);
      svg.appendChild(circle);
      pie.appendChild(svg);
    });
  </script>
</body>

什么导致了错误?我是否有误解?我所遵循的教程是否过时/错误?谢谢!

1
$$ 定义在哪里? - Rayon
请编辑您的问题并提供代码作为文本,而不是图像。 - Steve
3个回答

7

请包含以下内容:

function $$(selector, context) {
  context = context || document;
  var elements = context.querySelectorAll(selector);
  return Array.prototype.slice.call(elements);
}

根据作者Lea Verou所说:

在这本书中,介绍了$$()的定义,但由于这是一篇摘录,因此没有包含该部分。


哦,谢谢!这非常有帮助,已经解决了问题。我的直觉是正确的:D 无论如何,一旦SO允许,我会接受它作为答案 :) - Sticky

2

根据您提供的问题中提到的教程,我找到了一些可以帮助您的内容。

enter image description here

此外,您需要您的代码中进行包装,

$(function(){....});

由于您在标签中提到了jQuery,因此我希望这可以帮助您。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接