Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.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 如何使用dojo.style处理多个表单页面?_Javascript_Css_Dojo_Hide_Show - Fatal编程技术网

Javascript 如何使用dojo.style处理多个表单页面?

Javascript 如何使用dojo.style处理多个表单页面?,javascript,css,dojo,hide,show,Javascript,Css,Dojo,Hide,Show,我正在使用dojo 1.6并尝试使用以下代码处理表单页面: dojo.forEach(dojo.query(".form-page"), function(page, i){ if(page.id == "form-part1"){ dojo.style(page, "display", "block"); }else{ dojo.style(page, "display", "none"); } }); dojo.query(".n

我正在使用dojo 1.6并尝试使用以下代码处理表单页面:

dojo.forEach(dojo.query(".form-page"), function(page, i){
    if(page.id == "form-part1"){
        dojo.style(page, "display", "block");
    }else{
        dojo.style(page, "display", "none");
    }
 });

 dojo.query(".nextPgButton").connect("onclick", function(){
      var pages = dojo.query(".form-page");
      dojo.forEach(pages, function (page, i){
          if(dojo.style(page, "display") != "none"){
               dojo.style(page, "display", "none");
               dojo.style(page[i+1], "display", "block");
           }
      });
 });
第一条语句可以工作,因为只有第一页按预期显示。但是第二个没有正确检索页面的当前样式。所以当我点击我的下一页按钮时,所有的页面都被隐藏了

dojo.style(page,"display") // always return "block"
有人能告诉我为什么dojo.style不能检索我页面的实际样式吗


非常感谢

你在那里做了一些非常奇怪的事情

由于
页面
不是数组,因此使用
页面[i+1]
的最后一行实际上永远不会起作用。我想你可能是指
页面[I+1]

如果你的意思是我刚才说的,那么它将返回
block
,这是常识。只考虑有两个<代码>表单页< /代码>元素的情况。单击按钮时,会发生以下情况:

第一次迭代: ID为
#form-part1
的第一个元素具有
display:block
,因为您最初是这样设置的。这显然意味着正在执行
forEach()
中的
if()
语句,因为它不等于
“none”

这意味着它将
#form-part1
的样式设置为
display:none
,但也意味着它将下一个元素CSS设置为
display:block

第二次迭代: 第二个
.form页面
现在有
显示:block
(阅读上一次迭代的最后一句话)。这意味着
if()
也将执行,将样式设置回
display:none

它还将尝试查找下一个页面,但不再有其他页面,因此它还会抛出一个错误(代码中的另一个错误)


所以你显然必须重新检查你的代码,因为你做了一些错误的事情。你还必须重新表述你的问题,因为现在还不清楚你到底想达到什么目的。但是对我来说,如果你有2个页面,那么
if()
语句总是在执行。

谢谢,我的意思是“pages[i+1]”,只是一个复制错误。事实上,现在已经很清楚了。我刚刚编辑了我的代码,它可以正常工作。我使用dojo.some而不是dojo.forEach来退出循环。