Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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,用于在块中使用xml进行循环_Javascript_Xml_For Loop_Indexing_Blockly - Fatal编程技术网

不寻常的JavaScript,用于在块中使用xml进行循环

不寻常的JavaScript,用于在块中使用xml进行循环,javascript,xml,for-loop,indexing,blockly,Javascript,Xml,For Loop,Indexing,Blockly,我正在和谷歌的Blockly合作一个项目,但是部分文档是不可理解的。有人能帮我理解以下for循环(xml=allXml[i])的结束条件吗 我想,当allXml[I]未定义时,循环将退出,但是如何遍历这样的XML对象呢?它似乎总是返回未定义的循环并完全跳过循环 谢谢你的帮助 有关大多数函数的定义,请访问 我从文档页面中提取的代码是我在上的回购协议中找不到这段代码,所以我想这是文档中比较老的一个例子 但是,如果您查看一下Blockly.Xml.workspaceToDom()函数的实现,您将看到一

我正在和谷歌的Blockly合作一个项目,但是部分文档是不可理解的。有人能帮我理解以下for循环(xml=allXml[i])的结束条件吗

我想,当allXml[I]未定义时,循环将退出,但是如何遍历这样的XML对象呢?它似乎总是返回未定义的循环并完全跳过循环

谢谢你的帮助

有关大多数函数的定义,请访问


我从文档页面中提取的代码是

我在上的回购协议中找不到这段代码,所以我想这是文档中比较老的一个例子

但是,如果您查看一下
Blockly.Xml.workspaceToDom()
函数的实现,您将看到一个非常类似的东西

  var blocks = workspace.getTopBlocks(true);
  for (var i = 0, block; block = blocks[i]; i++) {
    var element = Blockly.Xml.blockToDom_(block);
    //...
    xml.appendChild(element);
  }
这里的想法是迭代代码的所有分支。顶部块没有顶部连接(它启动一个新分支)。
getTopBlocks()
返回一个数组
{!array.}


考虑到文档在关于并行执行的一节中显示了它,我认为这与这样一个事实有关,即您可以有更多未连接的代码分支。。。确切的实现只是随着时间的推移而改变。

根据代码,
Blockly.Xml.workspaceToDom(workspace)
的返回类型是
{!Element}

它基本上返回使用
goog.DOM.createDom('xml')创建的DOM节点。对于每个顶级块,它都会向其附加一个DOM节点


因此,基本上,所讨论的代码片段是在与顶级块对应的所有DOM节点之间循环。

关于循环终止的方式,您是正确的。至于像这样迭代XML,他们必须将其定义为某种数组。尝试
console.log(allXml)
查看它是什么类型的对象。我有。它是真正的xml。它看起来像xml,其行为方式与您希望xml在.childnodes和.childElementCount中的行为方式相同。
  var blocks = workspace.getTopBlocks(true);
  for (var i = 0, block; block = blocks[i]; i++) {
    var element = Blockly.Xml.blockToDom_(block);
    //...
    xml.appendChild(element);
  }