1

我使用 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));  
}       
4

2 回答 2

0

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

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

谢谢。

于 2012-11-28T19:22:19.657 回答
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));

也作为指南的注释 - 您可以单击评论链接以提出后续问题

于 2012-11-15T02:31:22.893 回答