2009-07-10 37 views
1

我想用Prototype的新元素函数构造一个表。当我用完整的内容更新thead时,我遇到了Firefox中的问题:所有元素和内容。 Firefox正在剥离标签并仅显示内容。Prototype Element.update多个对象

无论如何,我决定构造每一个th元素,然后使用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); 

如何在Prototype的update()函数中附加多个对象?

谢谢!

+0

我也尝试了innerHTML,但在Firefox中没有改变!thead应该是这样的: amount标签日期附件 但它只能说明: amounttagsdateattachment在Firefox 非常怪异的行为。它剥去标签或不关闭它们.. 我找不到解决方案:( – richard 2009-07-20 15:05:49

回答

1

编辑

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

请记住:tbody,thead和tfoot是表格的细分,并且必须包含tr元素的。你不应该直接将td或th元素放入这些元素中,因为结果最好是不可预测的。

结束编辑

的这里的问题是,Element.update()将被传递的字符串,HTML代码段,或实现的toString javascript对象(例如元)。但是,Element不支持“+”运算符,因为它使用它,并将所有对象名称相加。你将不得不显式调用每个孩子的toString方法这样:如果你在你的应用程序中使用script.aculo.us(原型扩展)

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

,您可以使用生成器类,以协助更容易元素建设。它提供了一个更直观的界面,特别是在创建大量元素时。下面是一个例子:

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

+0

Scriptaculous'Builder功能非常好!我正在寻找的东西,非常感谢!也感谢您清理那些thead和th,实际上我之前使用过tr,但是我的一个朋友给了我一个错误的建议:P现在在FF中完美无缺,因为它没有创建节点:)谢谢! – richard 2009-07-21 21:21:37