我试图在笔悬停在窗口上时创建新的圆圈。
我遇到无法在页面上添加圈子的问题。它只是徘徊。我如何修改我的代码以在其徘徊时添加圈子。



<!doctype html>
<html>
<head>
    <title> JavaScript Environment: Project </title>
    <meta charset="utf-8">
    <style>
        html, body {
            width: 100%;
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
        #canvas {
            background-color: yellow;
            width: 100%;
            height: 100%;
        }
        .pen {
            position: absolute;
            background-color: lightblue;
            width: 10px;
            height: 10px;
            border-radius: 5px;
        }
    </style>
    <script>
        window.onload = function() {
            function Circle(x, y) {
                this.x = x;
                this.y = y;
            }
            var canvas = document.getElementById("canvas");

            canvas.onmousedown = function() {
                mouseDown();
            };
            canvas.onmouseup = function() {
                mouseUp()
            };
            canvas.onmousemove = function() {
                mouseMove(event)
            };
            function mouseDown (){
                console.log ("mouse down");
            }
            function mouseUp (){
                console.log ("mouse up");
            }
            function mouseMove(e) {
                var canvas = document.getElementById("canvas");
                var pen = document.createElement("div");
                var x = e.clientX;
                var y = e.clientY;
                var coor = "Coordinates: (" + x + "," + y + ")";
                pen.setAttribute("class", "pen");
                pen.style.left = x + "px";
                pen.style.top = y + "px";
                document.getElementById("canvas").innerHTML = coor;
                canvas.appendChild(pen);
                addCircles(x, y);

                console.log("location @ " + x + " : " + y);

            }
            function addCircles(x, y) {
                var canvas = document.getElementById("canvas");
                var circle = document.createElement("div");
                circle.setAttribute("class", "pen");
                circle.style.left = x + "px";
                circle.style.top = y + "px";
                canvas.appendChild(circle);

            }
            canvas.addEventListener("mouseMove", mouseMove, false);
        };
    </script>
</head>
<body>
<div id="canvas"></div>
</body>
</html>

最佳答案

问题出在document.getElementById("canvas").innerHTML = coor;行中

尝试在画布div中添加跨度<span id="canvasText"></span>,然后将上面的行更改为document.getElementById("canvasText").innerHTML = coor;

就目前而言,您每次鼠标移动都会“重置”画布的内容,因此圆圈会立即从其中删除。仅重设画布内的跨度以保持圆圈。

09-16 12:30