我试图构建与原型的新元素功能表。我正经历在Firefox问题,当我与完整内容更新THEAD:所有th元素加内容。火狐只剥离标签并显示内容。

反正我决定建造每一个第i个元素,然后将其附加到利用Element.update()功能THEAD。但我还没有找到一种方法,多个对象追加与此功能。

在th元素看起来像这样:

var thead_amount = new Element('th', {
    'id': 'amount'
}).update('amount');

此正常工作:

new Element('thead').update(thead_amount);

此输出与上述相同的:

new Element('thead').update(thead_amount, thead_pdf, thead_tags, thead_date, thead_options);

此输出[object HTMLTableCellElement][object HTMLTableCellElement][object HTMLTableCellElement][object HTMLTableCellElement][object HTMLTableCellElement]

new Element('thead').update(thead_amount + thead_pdf + thead_tags + thead_date + thead_options);

我如何可以追加多个对象与原型的update()功能?

谢谢!

有帮助吗?

解决方案

修改

这只是跳出来在我要添加“TH”元素,以一个“THEAD”。这不好!一个THEAD应该只包含TR的。 TR的可以包含TH的,但如果你使用THEAD我会使用TD的来代替。

记住:TBODY,THEAD,TFOOT和表是细分的,并必须的包含TR的元件。你不应该把TD或th元素直接进入这些,因为结果是不可预知的最好的。

<强>结束修改

这里的问题是,Element.update()将被传递的字符串,HTML代码段,或实现的toString javascript对象(例如元)。然而,当你使用它,并将该对象的名字连在一起,你看到元素不支持“+”操作符。你必须显式调用每个孩子这样的toString方法:

new Element('thead').update(thead_amount.toString()
  + thead_pdf.toString() 
  + thead_tags.toString() 
  + thead_date.toString() 
  + thead_options.toString());

如果您使用的是您的应用程序script.aculo.us(原型扩展名),你可以使用生成器类,以协助更容易元建设。它提供了一个更加直观的界面,创造大量元素时尤其如此。下面是一个例子:

var table = Builder.node('table', {
  width: '100%',
  cellpadding: '2',
  cellspacing: '0',
  border: '0'
});

var tbody = Builder.node('tbody'),
    tr = Builder.node('tr', { className: 'header' }),
    td = Builder.node('td', [Builder.node('strong', 'Category')]);

tr.appendChild(td);
tbody.appendChild(tr);
table.appendChild(tbody);

$('divCat').appendChild(table);

查核 http://wiki.github.com/madrobby/scriptaculous/builder了解详情。

scroll top