Momoko Asahina 708H Ответов: 0

Как наложить новый холст поверх существующего и уничтожить его через несколько секунд?


Как титул.
Я поддерживаю систему. Я получил запрос, что когда я нажимаю на линию на холсте, цвет линии меняется в течение нескольких секунд и возвращается к исходному цвету. Я искал и нашел способ решить эту проблему-создать новый холст поверх старого холста, нарисовать линию с новым цветом и заставить ее исчезнуть через несколько секунд. Я попробовал, но ничего не вышло:
var newcanvas = document.createElement("canvas");
                newcanvas.id = "newcanvas";
                newcanvas.style.top= canvas.style.top;
                newcanvas.style.left = canvas.style.left;
                newcanvas.style.width = canvas.style.width;
                newcanvas.style.height = canvas.style.height;
                newcanvas.style.position = "absolute";
                newcanvas.style.display = "block";
                document.getElementsByTagName("body")[0].appendChild(newcanvas);
                //change color
                var ctx = newcanvas.getContext("2d");
                ctx.strokeStyle="#FFFF00";
                for (var r = 0; r < linePoints.length - 1; r += 1) {
                    ctx.moveTo(linePoints[r].x, linePoints[r].y);
                    ctx.lineTo(linePoints[r + 1].x, linePoints[r + 1].y);
                }
                ctx.stroke();
                //switch back in 4 seconds
                setTimeout(function () {
                    newcanvas = undefined;
                    runAnimation.value = false;
                }, 4000);

Новый холст появляется справа от старого холста и все еще находится там через 4 секунды. Это не то, чего я хочу. Как же мне это сделать?

Что я уже пробовал:

(код в моем описании проблемы)

enhzflep

"newcanvas = undefined;" приведет к тому, что переменная javascript теперь будет бесполезна, но вам все равно придется что-то делать с элементом на странице... Почему бы его родителю не удалить его из DOM?

Momoko Asahina 708H

Эх ... извините за плохой английский, но мне нужен этот холст только для временного использования. Когда мне это нужно, мне просто нужно создать его таким же образом снова.
И я также попробовал другой способ уничтожить его:

document.body.removeChild(document.getElementById("newcanvas"));

и это работает.

0 Ответов