Colspan for Scriptaculous / Prototype DOM元素

时间:2012-11-05 18:16:39

标签: javascript html scriptaculous

我利用scriptaculose / prototype Builder来创建TR和TD。 colspan在IE中不起作用,但它适用于FF和Chrome。你对这个问题有经验吗?

这在IE中不起作用,但它适用于FF和Chrome:

Builder.node('td',{'colspan':'12','class':'bdr-bottom'},(noteText))

适用于IE,FF和Chrome:

for (var i=1; i<numCols; i++)
{       
    noteRowSpan=Builder.node('td',{'class':'bdr-bottom'},(''));     
    $(noteRow2).insert($(noteRowSpan));  
}       

2 个答案:

答案 0 :(得分:0)

如果您使用下面的new Element(),则除非需要效果,否则不需要加载scriptaculous库 - 这些内置于代码PrototypeJS框架中。

Builder.node('td',{'colspan':'12','class':'bdr-bottom'},(noteText))

可以更改为

new Element('td',{'colspan':12,'class':'bdr-bottom'}).update(noteText);

for (var i=1; i<numCols; i++)
{       
    noteRowSpan=Builder.node('td',{'class':'bdr-bottom'},(''));     
    $(noteRow2).insert($(noteRowSpan));  
}

可以更改为此

for(var i=1 ; i<numCols; i++)
{
    noteRowSpan = new Element('td',{'class':'bdr-bottom'});
    $(noteRow2).insert(noteRowSpan);
    //if noteRow2 is created with new Element() you don't need to re-extend it do it like this
    noteRow2.insert(noteRowSpan);
}

编辑跟进

new Element()方法的参数不是子元素,而是您要创建的元素的属性。

你想做什么

noteRow1= new Element('tr',                           
                   new Element('td',{'class': 'bld rt'},'Date:'),
                   new Element('td').update(noteText)
                   ); 

应该像这样完成

noteRow1= new Element('tr');
noteRow1.insert(new Element('td',{'class': 'bld rt'}.update('Date:'));
noteRow1.insert(new Element('td').update(noteText));

或链接在一起

noteRow1= new Element('tr').insert(new Element('td',{'class': 'bld rt'}).update('Date:')).insert(new Element('td').update(noteText));

另外,作为指导说明 - 您可以点击评论链接询问后续问题

答案 1 :(得分:0)

感谢。我正在使用新的元素,它工作正常。如何使用嵌套的新元素?代码不起作用:

noteRow1= new Element('tr',                           
                       new Element('td',{'class': 'bld rt'},'Date:'),
                       new Element('td').update(noteText)
                       );       

感谢。