0

我正在尝试使用以下代码在运行时使用 vboxes 元素填充 hbox 元素:

许代码:

<hbox style="overflow:auto;" id="canvasContainer"> </hbox>

Javascript代码:

  this.canvasContainer = document.getElementById("canvasContainer");
  for(var i = 0;i<k;i++){
    let imgCanvas = document.createElementNS("http://www.w3.org/1999/xhtml",'html:canvas');
    imgCanvas.setAttribute("width",200);
    imgCanvas.setAttribute("height",150);
    imgCanvas.getContext("2d").fillRect(0,0,200,150);   
    let canvasVbox = document.createElementNS("http://www.w3.org/1999/xhtml",'vbox');
    this.canvasContainer.appendChild(canvasVbox);

    let canvasLabel = document.createElement("label");
    canvasLabel.setAttribute("value",i);
    canvasLabel.setAttribute("flex",1);
    canvasVbox.setAttribute("flex",1);
    canvasVbox.appendChild(imgCanvas);
    canvasVbox.appendChild(canvasLabel);

    this.canvasContainer.appendChild(canvasVbox);
  }

这会导致画布和标签在另一个下方垂直显示。你知道问题可能来自哪里吗?难道是不可能动态填充框吗?它是 Xulrunner 中的错误吗?您是否知道不使用网格的可能解决方法?

4

1 回答 1

2

问题出在下面一行: let canvasVbox = document.createElementNS("http://www.w3.org/1999/xhtml",'vbox');

VBox 不是 xhtml 的一部分,而是 xul 语法的一部分,所以我只需要将“http://www.w3.org/1999/xhtml”替换为“http://www.mozilla.org/keymaster/gatekeeper/” there.is.only.xul”,现在它可以工作了。

于 2011-01-26T14:06:11.447 回答