Dom 不是dojo.ready上的函数(与dojo 1.7相关)

Dom 不是dojo.ready上的函数(与dojo 1.7相关),dom,dojo,Dom,Dojo,我正在使用dojo 1.7进行开发,但遇到了一个错误。。我的目标是将项目从一个多选框移动到另一个多选框。这一页很长,所以我只复制了相关部分 这是我的头js代码,问题出现在dojo.ready之后。变量“newStore”工作得很好,所以我知道它执行得很好。问题似乎在于dojo.query(“button.switch”)。我得到的firebug错误是 dojo.query("button.switch").connect is not a function 这个错误在页面加载时抛出。代码是 &

我正在使用dojo 1.7进行开发,但遇到了一个错误。。我的目标是将项目从一个多选框移动到另一个多选框。这一页很长,所以我只复制了相关部分

这是我的头js代码,问题出现在dojo.ready之后。变量“newStore”工作得很好,所以我知道它执行得很好。问题似乎在于dojo.query(“button.switch”)。我得到的firebug错误是

dojo.query("button.switch").connect is not a function
这个错误在页面加载时抛出。代码是

<script type="text/javascript">
require(["dijit/dijit"]);
require(["dojo/parser"]);
require(["dijit/layout/BorderContainer"]);
require(["dijit/layout/ContentPane"]);
require(["dijit/layout/AccordionContainer"]);
require(["dijit/layout/TabContainer"]);
require(["dijit/form/CheckBox"]);
require(["dijit/form/Button"]);
require(["dijit/form/ComboBox"]);
require(["dijit/form/NumberTextBox"]);
require(["dijit/form/SimpleTextarea"]);
require(["dijit/form/TextBox"]);
require(["dijit/form/Textarea"]);
require(["dijit/form/MultiSelect"]);
require(["clipart/ArrowLeft"]);
require(["clipart/ArrowRight"]);
require(["dijit/form/FilteringSelect"]);
require(["dijit/form/RadioButton"]);
require(["dijit/form/Select"]);
require(["dojox/layout/GridContainer"]);
require(["dojo/data/ItemFileReadStore"]);
require(["dijit/Tree"]);
require(["dojo/ready"]);


dojo.ready(function(){
var newStore = new dojo.data.ItemFileReadStore({
    url: "http://0:3000/sample/sample_name"
   });
   dijit.byId('sc_sample_name').set('store',newStore);

dojo.query("button.switch")
  .connect("onclick",function(e){
    switch(e.target.id.toString()){
      case "left" : dijit.byId("at2").addSelected(dijit.byId("at1")); break;
      case "right" : dijit.byId("at1").addSelected(dijit.byId("at2")); break;
    }
  });
});

</script> 

需要([“dijit/dijit”]);
require([“dojo/parser”]);
需要([“dijit/layout/BorderContainer”]);
需要([“dijit/layout/ContentPane”]);
需要([“dijit/layout/acordioncontainer”]);
需要([“dijit/layout/TabContainer”]);
要求([“dijit/form/CheckBox”]);
需要([“dijit/form/Button”]);
需要([“dijit/form/ComboBox”]);
要求([“dijit/form/NumberTextBox”]);
需要([“dijit/form/SimpleTextarea”]);
要求([“dijit/form/TextBox”]);
要求([“dijit/form/Textarea”]);
要求([“dijit/form/MultiSelect”]);
需要([“剪贴画/箭头左]);
需要([“剪贴画/箭头右键]);
要求([“dijit/form/FilteringSelect”]);
需要([“dijit/form/RadioButton”]);
要求([“dijit/form/Select”]);
需要([“dojox/layout/GridContainer”]);
需要([“dojo/data/ItemFileReadStore”]);
需要([“dijit/Tree”]);
需要([“dojo/ready”]);
ready(function()){
var newStore=new dojo.data.ItemFileReadStore({
url:“http://0:3000/sample/sample\u name”
});
dijit.byId('sc_sample_name').set('store',newStore);
查询(“button.switch”)
.connect(“onclick”,函数(e){
开关(例如target.id.toString()){
案例“左”:dijit.byId(“at2”).addSelected(dijit.byId(“at1”));break;
案例“右”:dijit.byId(“at1”).addSelected(dijit.byId(“at2”));break;
}
});
});
这是一个页面加载问题,这就是为什么我不包括HTML(这是巨大的)。以前有人见过这种行为吗?Janie

我认为您正在加载,即您的
dojoConfig
/
数据dojo配置
有一个选项
async:true
,该选项从版本1.7开始将dojo切换到无基模式

使用
query(“button.switch”)。打开(“click”,函数(e){…})
而不是
connect

require([
    "dojo/ready",
    "dojo/query"
], function(
    ready,
    query
) {

    ready(function() {

        query("button.switch").on("click", function(e) {
            console.log(e.target.id);            
        }); 
    });  
});​
或者不要切换到无基础模式

在这个jsFiddle:,将
async:true
更改为
async:false
或将其完全删除,然后
connect
将起作用:


您能显示button.switch声明的行吗。这个查询将为您提供带有类开关的按钮的节点列表。您还可以检查dojo.query(“button.switch”)返回的内容吗?您能访问NodeList的第一个元素吗?这太完美了!这解决了这么多的问题,你不仅给了我一个很好的答案,而且还让我了解了这个过程。我非常感激。为你回答因果报应!珍妮