Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DOM中新的SVG元素,通过JavaScript添加,直到mouseup才呈现_Javascript_Dom_Svg - Fatal编程技术网

DOM中新的SVG元素,通过JavaScript添加,直到mouseup才呈现

DOM中新的SVG元素,通过JavaScript添加,直到mouseup才呈现,javascript,dom,svg,Javascript,Dom,Svg,纯JavaScript(没有JQuery、D3或其他外部库)。我正在拖动看起来像矩形列的SVG对象。它们在矩形之间有连接线,当我将一个矩形拖动到另一个矩形时,我将从DOM中删除所有元素,检查列中的每个矩形是否对应于相邻列中的矩形,如果该条件为真,则在它们之间绘制一条新的连接线。在控制台中,我可以看到元素被立即创建,但直到我释放鼠标并停止拖动,它们才被渲染。因为我可能会在多个列上拖动,并且在决定放置位置之前需要比较每个位置的结果,所以我需要强制新元素不仅立即创建,而且要立即渲染,直到释放鼠标才被阻

纯JavaScript(没有JQuery、D3或其他外部库)。我正在拖动看起来像矩形列的SVG对象。它们在矩形之间有连接线,当我将一个矩形拖动到另一个矩形时,我将从DOM中删除所有元素,检查列中的每个矩形是否对应于相邻列中的矩形,如果该条件为真,则在它们之间绘制一条新的连接线。在控制台中,我可以看到元素被立即创建,但直到我释放鼠标并停止拖动,它们才被渲染。因为我可能会在多个列上拖动,并且在决定放置位置之前需要比较每个位置的结果,所以我需要强制新元素不仅立即创建,而且要立即渲染,直到释放鼠标才被阻止

[编辑:为了回应对“不显示研究”的否决票,请注意以下(原始)段落。我尝试了我能找到的所有建议,明确提到了最常见的建议。也许我的研究方法很简单;你能建议我下次做得更好吗?]

根据这个网站和其他地方的建议,我尝试从DOM中添加和删除一个元素,并切换各种元素的显示属性,但没有成功


示例文件位于。要运行,请克隆并在浏览器中(从文件系统中)打开text_correctifications_static_sample/test.xhtml,以便找到链接到的CSS和JavaScript文件。抓住列顶部的拖动图标并向左或向右拖动。连接线仅在下降时重新绘制,但我需要它们在每次交叉后立即重新绘制(稍后我会担心在mousemove上拉伸它们)。

我认为原因是您在endMove()中(在调用
drawLines()
后)为这些线赋予了笔划颜色。但是在
swapColumns()
函数中没有这样做。SVG中的新元素在默认情况下没有笔划。

我会把它放在小提琴上。我认为人们开始挖掘和克隆代码等太多了,除非有理由小提琴不会突出这个问题。谢谢你的快速回复。现于。但是拖动在那里不起作用(这可能是诊断吗?),尽管它在真实的浏览器环境中起作用。正如伟大的现代哲学家荷马·辛普森(Homer Simpson)可能说过的那样:“Doh!”。是的,这解决了问题。这是一个多么令人尴尬的新手错误。唉--操作