Очистить HTML страницу без холста - PullRequest
0 голосов
/ 27 мая 2020

Мне интересно, есть ли способ очистить страницу HTML без использования холста.

Я пытаюсь создать простую программу, используя JavaScript без холста, что dr aws линия от центра окна до места, куда указывает указатель мыши. Я могу успешно рисовать новую линию всякий раз и везде, где движется мышь, но не знаю, как очистить страницу, не создавая холст и не используя clearRect().

Есть ли способ очистить страницу без холст?

На всякий случай, если кто-то сочтет это полезным, вот мой код:

      window.addEventListener('mousemove', function (e){
      linedraw(window.innerWidth/2, window.innerHeight/2, e.x, e.y)
      });

      function linedraw(x1, y1, x2, y2) {
    if (x2 < x1) {
        tmp = x2 ; x2 = x1 ; x1 = tmp
        tmp = y2 ; y2 = y1 ; y1 = tmp
    }

    lineLength = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
    m = (y2 - y1) / (x2 - x1)

    degree = Math.atan(m) * 180 / Math.PI

    document.body.innerHTML += "<div class='line' style='transform-origin: top left; transform: rotate(" + degree + "deg); width: " + lineLength + "px; height: 1px; background: black; position: absolute; top: " + y1 + "px; left: " + x1 + "px;'></div>"
}

1 Ответ

0 голосов
/ 27 мая 2020

Вместо добавления нового div просто заменяйте html при каждом движении мыши.

window.addEventListener('mousemove', function (e){
    linedraw(window.innerWidth/2, window.innerHeight/2, e.x, e.y)
});

function linedraw(x1, y1, x2, y2) {
    if (x2 < x1) {
        tmp = x2 ; x2 = x1 ; x1 = tmp
        tmp = y2 ; y2 = y1 ; y1 = tmp
    }

    lineLength = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
    m = (y2 - y1) / (x2 - x1)

    degree = Math.atan(m) * 180 / Math.PI

    // `document.body.innerHTML = ` instead of `document.body.innerHTML += `
    document.body.innerHTML = "<div class='line' style='transform-origin: top left; transform: rotate(" + degree + "deg); width: " + lineLength + "px; height: 1px; background: black; position: absolute; top: " + y1 + "px; left: " + x1 + "px;'></div>"
}
...