this.domNode 为空

Posted

技术标签:

【中文标题】this.domNode 为空【英文标题】:this.domNode is null 【发布时间】:2012-01-24 16:09:06 【问题描述】:

我正在尝试使用 jquery 加载道场图表。我正在使用此代码。但是,在第二次单击中,在第一个按钮中我收到此错误。如果我单击第一个按钮,单击第二个按钮并再次单击第一个按钮,也会发生同样的情况。这个问题让我发疯。

demo 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>

【问题讨论】:

尝试使用调试时使用的js文件,而不是最小化的。这是为了更容易调试。, 只是想知道你为什么使用两个 javascript 框架? 好吧,这与问题无关。我只是使用 dojo 来创建图表。 @Farmor 文件包含在 require 中。如果我尝试像 【参考方案1】:

您似乎正试图在插入/解析新图表之前删除旧图表,但我认为这不会发生。这可能会导致 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 中的小部件。

编辑:当您单击第二个按钮并删除图表时,&lt;style&gt; 标记也将被删除。这就是为什么您会从工具提示 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 中。

【讨论】:

感谢您的回答。该链接现已更新为您的建议。但是当我们在第一个按钮之后单击第二个按钮时会出现问题。您需要激活工具提示来重现问题。一些 div 没有被删除。 @Daniel 嗯,我没有在更新的页面上看到错误。你是对的,工具提示 div 没有被删除,但我不确定它们是否有问题,因为它们没有明确的 id(并且工具提示有点像单例)。 现在没有错误了。唯一的问题是未删除的工具提示内容。如果我被身体或其他东西破坏,我将得到初始错误 this.domNode is null @Daniel 啊,我现在明白了。我用建议更新了答案。 @Daniel 你太客气了!编码愉快,周末愉快。

以上是关于this.domNode 为空的主要内容,如果未能解决你的问题,请参考以下文章

linux字符测试

使用脚本选项及组合条件测试

PHPActiveRecord validates

java判断字符串是不是为空

php判断mysql数据库是不是为空

LeetCode 951 翻转等价二叉树