gpt4 book ai didi

javascript - this.domNode 为空

转载 作者:数据小太阳 更新时间:2023-10-29 04:48:31 25 4
gpt4 key购买 nike

我正在尝试使用 jquery 加载 dojo 图表。我正在使用这段代码。但是在第二次单击时,在第一个按钮中出现此错误。如果我单击第一个按钮,单击第二个按钮,然后再次单击第一个按钮,也会发生同样的情况。这个问题快把我逼疯了。

demo here

enter image description here

<script type="text/javascript">
$(document).ready(function () {
$('.lista_').click(function () {
$.get('index1.php', function (data) {
dojo.addOnLoad(function () {
require(["dojo/_base/xhr", "dojo/parser", "dojo/dom"], function (xhr, parser, dom) {
var um = [];
dijit.registry.filter(function (w) { //problem here, maybe this code destroy something that should not be destroyed
if (dojo.indexOf(um)) {
w.destroyRecursive();
}
});
$('#paginas').html(data);

dojo.parser.parse(dojo.byId('paginas'));

});
});
});
});
});
</script>

最佳答案

看起来您正在尝试在插入/解析新图表之前删除旧图表,但我认为这不会发生。这可能会导致 Dojo 吐出各种错误。

dijit.registry.filter(function (w) { //problem here, maybe this code destroy something that should not be destroyed
if (dojo.indexOf(um)) {
w.destroyRecursive();
}
});

我不确定你在这里做什么。 filter函数将返回回调返回 true 的小部件数组。此外,dojo.indexOf用于搜索数组中的元素(我不确定你在用它做什么黑魔法 :P)。

我认为(如果我理解了您的意图),您应该这样做:

dijit.registry.findWidgets(dojo.byId("paginas")).forEach(function(w) {
w.destroy();
});

这将在插入和解析新获取的 HTML 之前销毁 #paginas 中的小部件。

编辑:当您点击第二个按钮并删除图表时,<style>标签也被删除。这就是为什么您会看到工具提示 div 中的伪影,因为它不再被 CSS 隐藏。您可以通过在主文件中导入 claro.css 来解决这个问题,即:

<style type="text/css">
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.7/dijit/themes/claro/claro.css";
</style>

在主文件的标题中,而不是在您使用 jquery (index1.php) 加载的 HTML 中。

关于javascript - this.domNode 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com