2012-10-27 74 views
0

我通过多个线程阅读而未找到明确的答案。 我正在使用JavaScript库(Drinks.js)将多个小部件放在我的网页上。 下面的代码将一个单一的项目添加到我的div元素pnlThermo多个appendChild调用不起作用

function create(item) { 
    var thermo = Drinks.createElement('display'); 
    thermo.setAttribute('id', item); 
    thermo.setAttribute('label', item); 
    Drinks.appendChild('pnlThermo', thermo);   
} 

好了,现在我想几个项目添加到同一个div元素。无论我使用for循环还是显式调用该函数,都只会渲染第一个项目。例如:

create('T1'); 
create('T2'); 
create('T3'); 

导致仅显示T1。我可能错过了一些东西,我对JavaScript编程颇为陌生。

谢谢先进。

+0

我在这里错过了什么吗? HTML元素“”是否存在? – andlrc

+0

我想你每次都使用相同的ID? –

+0

@GurpreetSingh不会导致ID为'T1,T2,T3' – andlrc

回答

0

的参考手册(http://goincompany.com/DTManual01.pdf)表示:

已创建的HTML元素后,必须将它追加到 HTML容器。为了做到这一点,你必须使用Drinks类提供的appendChild 函数。 Drinks.appendChild('body', gauge); 'body'是HTML容器的id。如果父母是 仪器,则此功能不起作用。我们必须使用仪器的appendChild 方法,但我们稍后会看到。

似乎暗示,第一个参数必须是一个HTML标记名,它没有什么意义 后来图书馆是一个小奇怪恕我直言。

+0

是的,我忘了提及pnlThermo是一个标准的div元素:

Mark

+0

问题是如果在body标签的onLoad事件中调用多个appendChild函数不起作用。例如: <体的onLoad = “initBoard();”> <! - 其他的东西 - > 不起作用。相反: 工作正常。 我不明白,如果问题是关于Drinks.js代码或一般的JavaScript编程。 – Mark

+0

在您的非工作场景中,直到创建后才会调用InitBoard。在你的第二,敬畏是真实的。我通常不使用onLoad,而是将所有JS脚本放在body标签之后和HTML标签之前,以便执行顺序非常清晰。 – HBP