使用Dojo编码,收到错误';dijit.byId(…)和#x27;是否为null或不是对象

使用Dojo编码,收到错误';dijit.byId(…)和#x27;是否为null或不是对象,dojo,Dojo,我在网上看到很多关于这个错误的参考资料,但它们对我没有帮助。我想我对这个问题还不够了解,所以我需要一个具体的答案。 我正在运行的页面上附加代码的第一部分。我显示的最后一行是在标题中创建错误声明的那一行。如果你有任何建议,请告诉我。 谢谢大家! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://w

我在网上看到很多关于这个错误的参考资料,但它们对我没有帮助。我想我对这个问题还不够了解,所以我需要一个具体的答案。
我正在运行的页面上附加代码的第一部分。我显示的最后一行是在标题中创建错误声明的那一行。如果你有任何建议,请告诉我。 谢谢大家!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <title>CDI Web Portal</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
   <script src="js\dojo\dojo.js" type="text/javascript"></script>
  <script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAA5a4NhilcmrdMQ5e3o22QWRQWrGbhbxAguaJ-a4SLWYiya7Z2NRTDfQBdxmHdf5ydkZYLZTiz1tDXfg"></script>
  <script type="text/javascript" src="ge-poly-fit-hack.js"></script>
  <script type="text/javascript" src="kmldomwalk.js"></script>
  <style type="text/css">
    @import "js/dijit/themes/tundra/tundra.css";
    @import "js/dojo/resources/dojo.css";
  </style>
  <style type="text/css">@import "index.css";</style>

    <script type="text/javascript"> dojo.ready(function() { dojo.byId("greeting").innerHTML += ", from " + dojo.version; });     </script>

<script type="text/javascript">
    // <![CDATA[

    djConfig = { parseOnLoad: true };
   // google.load("dojo", "1.6.1");
    google.load("maps", "2");
    google.load("earth", "1");

    var g_ge;
    var g_earthDisabled = false;
    var g_kmlObject;

    google.setOnLoadCallback(function() {
        dojo.require('dijit.layout.BorderContainer');
        dojo.require('dijit.layout.SplitContainer');
        dojo.require('dijit.layout.ContentPane');
        dojo.require('dijit.Tree');
        //dojo.require('CheckboxTree');
        dojo.require('dijit.form.CheckBox');
        dojo.require('dijit.form.Button');
        dojo.require('dijit.form.TextBox');
        dojo.require('dojo.data.ItemFileWriteStore');
        dojo.require('dojo.parser');
        dojo.require('dojo.cookie');
        dojo.require('dojo.fx');
        dojo.addOnLoad(function() {
            // load checkboxtree
            var scpt = document.createElement('script');
            scpt.src = "dijit.CheckboxTree.js";
            document.body.appendChild(scpt);

            { dijit.byId('load-button').setDisabled(true) };
            // build earth
            google.earth.createInstance(
      'map3d',
      function(ge) {
          g_ge = ge;
          g_ge.getWindow().setVisibility(true);
          g_ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
          g_ge.getLayerRoot().enableLayerById(g_ge.LAYER_BORDERS, true);
          g_ge.getLayerRoot().enableLayerById(g_ge.LAYER_BUILDINGS, true);

          dijit.byId('load-button').setDisabled(false);
          checkAutoload();
      },
      function() {
          g_earthDisabled = true;
          dijit.byId('load-button').setDisabled(true);

CDI门户网站
@导入“js/dijit/themes/tundra/tundra.css”;
@导入“js/dojo/resources/dojo.css”;
@导入“index.css”;
ready(函数(){dojo.byId(“问候”).innerHTML+=”,来自“+dojo.version;”);

//这意味着您有一个dojo对象,而不是dijit对象——或者根本没有名为
load button
的对象,因为不清楚创建
load button
的位置。确保存在使用dijit创建的具有
id=“load button”
的对象。

根据您的评论,您使用了声明性语法来创建dijit,即
。如果使用声明性语法,则实际上会在加载页面后创建dijit。因此,您应该将使用dijit的代码放在Dojo的load回调中,即
Dojo.addOnLoad
回调的内部

但是您的代码格式不好,并且与GoogleMaps加载回调混合在一起,检查代码并不容易。我的建议是包装
dijit.byId('load-button').setDisabled(true)与dojo.addOnLoad一起使用,如下所示:

dojo.addOnLoad(function() {
    dijit.byId('load-button').setDisabled(true);
});

非常感谢。我知道你有答案,只是我还不清楚我需要做什么。这是我页面正文中的代码副本。在这里,您将看到我对加载按钮的引用。可以谢谢你的帮助!