javascript - 在 javascript/svg/d3 中的旋转函数中获取变量值时遇到问题
问题描述
<script>
for(i = 0;i < 12;i++) {
svg.append("polygon")
.attr("points", "0,0.9511, 1.0,0.95111, 1.309,0, 1.618,0.9511, 2.618,0.9511, 1.809,1.5388, 2.118,2.4899, 1.309,1.9021, 0.5,2.4899, 0.809,1.5388")
.attr("transform", "translate(850, 350), scale(8),rotate(30*i, 800,350)")
.style("fill", "yellow");
}
</script>
这是我的星星代码。我必须设计一个半径约为 50 的 800,350 周围的 12 颗星星。问题是 30*i 被解释为 30*i 而不是乘以 0,30,60,90.. ...度。这真的很奇怪,因为我能够在不计算 rect 转换的情况下访问过去的值。
请不要告诉我使用 x=a+rcos theta 来计算 x,y 的值。我想以另一种更优雅的方式来做这件事也请善待我是这门语言的新手。
解决方案
您的变量 'i' 呈现为字符串 'i' 而不是度数值。尝试将您的代码更改为类似于下面的代码,看看它是否能解决您的问题:
for(i=0;i<12;i++)
{
svg.append("polygon").attr("points", "0,0.9511, 1.0,0.95111, 1.309,0, 1.618,0.9511, 2.618,0.9511, 1.809,1.5388, 2.118,2.4899, 1.309,1.9021, 0.5,2.4899, 0.809,1.5388")
.attr("transform", `translate(850, 350), scale(8),rotate(30*${i}, 800,350)`)
.style("fill", "yellow");
}
我已将属性字符串值“translate(850, 350), scale(8),rotate(30*i, 800,350)”更改为使用模板字符串来使用“i”的实际值: translate(850, 350), scale(8),rotate(30*${i}, 800,350)
推荐阅读
- python - 在 Python 中抑制 OpenCV 输出消息
- css - 如何在 Visual Studio 代码中使字体系列草书?
- python - 将带有值列表的嵌套键转换为 JSON 中的字符串值
- node.js - Firestore onUpdate 功能未触发
- postgresql - 将 CSV 导入 PostgreSQL,匹配键
- javascript - NestJS 'type' 已声明,但它的值永远不会被读取。ts(6133)
- javascript - 客户端打字稿:如何从工厂方法模式中删除循环依赖?
- c++ - 从源代码构建时 llvm 没有注册目标
- r - 获取传递给另一个函数的函数向量的字符串名称
- python - 训练和验证数据结构