Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 存储为null或不是dojo中的对象错误_Javascript_Dojo - Fatal编程技术网

Javascript 存储为null或不是dojo中的对象错误

Javascript 存储为null或不是dojo中的对象错误,javascript,dojo,Javascript,Dojo,我有一个为菜单项“删除”定义的功能,右键单击树层次结构的任何文件夹,以删除树的文件夹。但是点击它,我得到了下面的错误消息“storeisnull或不是dojo中的对象错误” 有人能建议我如何更正此错误消息吗?我下面的函数是否有问题 <ul dojoType="dijit.Menu" id="tree_menu" style="display: none;"> <li dojoType="dijit.MenuItem" data-dojo-props="disa

我有一个为菜单项“删除”定义的功能,右键单击树层次结构的任何文件夹,以删除树的文件夹。但是点击它,我得到了下面的错误消息“storeisnull或不是dojo中的对象错误”

有人能建议我如何更正此错误消息吗?我下面的函数是否有问题

<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;">   
      <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false,
                                     onClick: function (evt){
                                     store.deleteById(selectedItemId);
                                     resetEditor();
                                 }",>Delete project</li></ul>

似乎onClick函数正在MenuItem上下文中运行,这意味着在onClick函数中,“this”指的是MenuItem小部件实例

要在onClick方法中使用store变量,可以先在小部件中引用它,如下所示:

<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;">   
  <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false,
                                 _store: store,
                                 onClick: function (evt){
                                 _store.deleteById(selectedItemId);
                                 resetEditor();
                             }",>Delete project</li></ul>
  • 删除项目
也可以在窗口上下文中引用全局存储对象:

<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;">   
  <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false,
                                 onClick: function (evt){
                                 window.store.deleteById(selectedItemId);
                                 resetEditor();
                             }",>Delete project</li></ul>
  • 删除项目

好吧,您在
onClick
函数中引用了
存储
变量,但我猜它在该函数可见的范围内实际上不可用。。。你到底在哪里定义你的商店?(关于这个问题,
resetEditor
的定义在哪里,因为这可能是它接下来要抱怨的事情。)嗨,肯,我在mycode的开头定义了存储。相同的代码适用于button,但在我将其转换为菜单项时失败。原因是什么?我们是否可以像上面一样为菜单项实现相同的代码?因为奇怪的是,它响应button,但对菜单项失败。下面是按钮代码:Hi Sebastien,我尝试了您在我的代码中为delete menuitem建议的更改,但它不起作用。我尝试了您上面提到的两种建议方法,但它对delete menuitem没有响应。我已经在第一个线程的标题“非工作代码”下添加了我的全部代码。你能看看我的代码有没有出错吗?奇怪的是,如果我们放置一个按钮而不是menuitem,它就会工作。您好,您的代码中似乎有一个小错误:在menuitem的onClick方法中,您正在调用_store.deleteById(selectedItemId);而不是这个。_store.deleteById(selectedItemId);嗨,塞巴斯蒂安,当我使用这个时。\ u Store.deleteById(selectedItemId);我在firebug和IE dev调试工具中得到了这个错误消息。“'this.\u store'为空或不是对象”。我的代码在标题“非工作代码”下的第一个线程中。您能看看我的代码中是否还缺少其他内容吗?这是我在按钮单击调用函数时遇到的最奇怪的问题之一,但菜单中没有调用相同的函数。我的代码可以复制到.txt并保存为.html.Open html&allow activex,然后它将运行。右键单击文件夹,发现删除菜单项不起作用。您好,您似乎没有从昨天得到我的解释:在您的HTML页面中,替换“\u store.deleteById(selectedItemId);”使用“this.\u store.deleteById(selectedItemId);”_使用_store:store设置菜单项后,store是菜单项的一个属性,因此您需要使用它。_store进入您的方法以引用它。一个查询Sebastien,虽然代码可以工作,但它只在最后一个文件夹下创建文件夹。我在树结构标题下的myfirst thread中为look and feel添加了树图形结构。我的意思是,如果我在子项目3_2_1上单击鼠标右键,然后单击“添加文件夹”,它会在子项目3_2/子项目3_1下添加文件夹,但如果我对其他文件夹(如子项目3_2/子项目3_1)执行相同操作,它不会对单击的文件夹起作用,但会再次在子项目3_2_1_1下创建文件夹。那么你能说一下为什么会发生这种奇怪的行为,我该如何纠正它?我们在代码中所做的事情是否不正确?
<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;">   
  <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false,
                                 onClick: function (evt){
                                 window.store.deleteById(selectedItemId);
                                 resetEditor();
                             }",>Delete project</li></ul>