javascript D3:如何通过 d3 或 javascript 删除整个脚本

javascript D3: how to remove an entire script via d3 or javascript

我有这个设置:

index.html 包含

<div id="div1"></div> 

然后我动态加载到其中(当套接字到达时)执行此操作的文件:

<script>
    var socket = io.connect('http://127.0.0.1:8080');
    socket.on('load', function () {
        $("#div1").load("sources/load.html);
    });
</script> 

这很好用,让我可以在不刷新的情况下向页面添加内容等。在那些添加的文件中有一些 D3 代码。

现在的挑战是删除在我需要时加载的内容。 我尝试加载另一个包含要删除的代码的文件 (load2.html)。

删除表单中的内容没有问题:

<div id="div10"> HI </div> 

使用:

d3.select(#div10).remove(); 

这将删除 "HI"。 问题是我无法删除 "generated script"。 例如,加载的文件 (load.html) 是:

<div id="rm1">
<script>
d3.select("body").append("p").text("D3 tooooo!!!");
var svgContainer = d3.select("body").append("svg")
                                 .attr("width", 200)
                                 .attr("height", 200);

//Draw the Circle
var circle = svgContainer.append("circle")
                        .attr("cx", 30)
                        .attr("cy", 30)
                        .attr("r", 20);
</script>
</div>

编码

d3.select("#rm1").selectAll("*").remove();
$("#rm1").html("");
d3.select("#rm1").remove(); 

不会对"d3 script"产生任何影响。

有什么建议吗?

问题可以解决,让d3生成id后去掉。所以在加载的第一个文件中,我更改了 d3 代码以附加一个带有 id 的 div:

var rm = d3.select("body").append("div").attr("id","d1");
rm.append(.......)

然后将其加载到另一个文件中:

d3.select("#d1").remove();

会成功的。

所以问题是我无法删除不是 "created" 与 d3,但存在于 "html" 代码中的 ids 内容。 仍然需要了解为什么...