我使用下面显示的代码在包装器(div)绘制形状中创建46个小圆圈;
let elem = document.getElementById('draw-shapes');
let params = { width: 1024, height: 768 };
let two = new Two(params).appendTo(elem);
for (let i = 1; i < 47; i++) {
circle = two.makeCircle(x, y, radius);
circle.fill = 'green';
circle.stroke = 'white';
circle.linewidth = 1;
circle.id = i;
}
Run Code Online (Sandbox Code Playgroud)
所有图纸都是使用Two.js库制作的.我在文档中读到我可以更改已创建元素的id,但我还需要为每个元素分配一个类.我已经尝试了从纯js setAttribute到jQuery .attr和.addClass方法的所有方法,但它们都没有用,所以我开始怀疑这是否有可能呢?如果有人知道某种方式,请告诉我如何.谢谢.
没有内部实用程序或属性可以获取每个两个元素的 DOM 节点。
但id您指定的确实已添加到two-<specified-id>实际节点中。
这样就可以正常使用了document.getElementById。
所以在你的情况下
let elem = document.getElementById('draw-shapes');
let params = {
width: 300,
height: 300
};
let two = new Two(params).appendTo(elem);
for (let i = 1; i < 20; i++) {
const circle = two.makeCircle(i * 10, i * 10, 40);
circle.fill = 'green';
circle.stroke = 'white';
circle.linewidth = 1;
circle.id = `two-circle-${i}`;
}
two.update();
// add classname to every fifth element;
for (let i = 1; i < 20; i += 5) {
const circleNode = document.getElementById(`two-circle-${i}`);
circleNode.classList.add('classname');
circleNode.addEventListener('mouseover', function() {
const path = two.scene.getById(this.id)
path.scale = 1.2;
two.update();
});
circleNode.addEventListener('mouseout', function() {
const path = two.scene.getById(this.id)
path.scale = 1;
two.update();
});
}Run Code Online (Sandbox Code Playgroud)
.classname {
stroke-width: 5;
stroke: red;
fill:yellow;
cursor:pointer;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/two.js/0.6.0/two.js"></script>
<div id="draw-shapes"></div>Run Code Online (Sandbox Code Playgroud)