Я довольно новичок в HTML и JS, но я пытаюсь изучить некоторые основы. Сейчас я экспериментирую с графикой.
Я пытаюсь создать два элемента SVG динамически с помощью JS, а затем перемещать их по отдельности с помощью мыши.
Я могу создавать их и регистрировать на них события мыши по отдельности, но не могу заставить их двигаться.
Чтобы попытаться переместиться туда, в моей функции dragging () я назначаю svg style.top и style.left значению указателя. Я могу подтвердить в консоли JS, что событие отправлено с SGV и что верхний и левый стили меняются в теге элемента, но позиция на экране не меняется.
Я последовал другому примеру, где svg был перемещен с помощью мыши, назначающей стиль top, и оставлен со значениями мыши, поэтому я не уверен, почему это не работает.
Спасибо
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>SVG Test</title>
</head>
<body>
<h1>Testing <abbr>SVG</abbr></h1>
<div id="svg54583"></div>
<script>
// create the svg element
var svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
// set width and height
svg1.setAttribute("width", "100");
svg1.setAttribute("height", "100");
svg1.setAttribute("id", "firstsvg");
svg1.onmousedown = startdrag;
// create a circle
var cir1 = document.createElementNS("http://www.w3.org/2000/svg", "circle");
cir1.setAttribute("cx", "80");
cir1.setAttribute("cy", "80");
cir1.setAttribute("r", "30");
cir1.setAttribute("fill", "red");
// attach it to the container
svg1.appendChild(cir1);
// attach container to document
//document.getElementById("svg54583").appendChild(svg1);
document.body.appendChild(svg1);
var svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
// set width and height
svg1.setAttribute("width", "100");
svg1.setAttribute("height", "100");
svg1.setAttribute("id", "secondsvg");
svg1.onmousedown = startdrag;
// create a circle
var cir1 = document.createElementNS("http://www.w3.org/2000/svg", "circle");
cir1.setAttribute("cx", "80");
cir1.setAttribute("cy", "80");
cir1.setAttribute("r", "30");
cir1.setAttribute("fill", "red");
// attach it to the container
svg1.appendChild(cir1);
// attach container to document
//document.getElementById("svg54583").appendChild(svg1);
document.body.appendChild(svg1);
function startdrag(e)
{
var elmnt = e.target;
elmnt.onmousemove = dragging;
}
function dragging(e)
{
var elmnt = e.target;
elmnt.style.top = e.clientY ;
elmnt.style.left = e.clientX ;
console.log(elmnt);
}
</script>