如何添加< table>在IE6中使用元素与原型? [关闭]
-
02-07-2019 - |
题
使用Prototype 1.6的“new Element(...)”我正在尝试创建一个< table>具有< thead>的元素和< tbody>但在IE6中没有任何反应。
var tableProto = new Element('table').update('<thead><tr><th>Situation Task</th><th>Action</th><th>Result</th></tr></thead><tbody><tr><td>a</td><td>b</td><td>c</td></tr></tbody>');
然后我试图像这样注入它的副本:
$('div.question').each(function(o) {
Element.insert(o, { after:$(tableProto.cloneNode(true)) });
});
我目前的解决方法是创建一个&lt; div&gt;而不是&lt; table&gt;元素,然后“更新”它包含所有表格HTML。
如何成功地做到这一点?
解决方案
事实证明,我在问题中提供的示例代码没有任何问题 - 它在IE6中运行得很好。我面临的问题是我还为&lt; table&gt;指定了一个类。构造函数中的元素不正确,但在我的示例中省略了它。
“真实的”代码如下,并且不正确:
var tableProto = new Element('table', { class:'hide-on-screen'} ).update('<thead><tr><th>Situation Task</th><th>Action</th><th>Result</th></tr></thead><tbody><tr><td>a</td><td>b</td><td>c</td></tr></tbody>');
这在Firefox中正常运行,但在IE6中失败,因为它错误。
通过此构造函数向元素添加属性的正确方法是提供字符串,而不仅仅是属性名称。以下代码适用于两种浏览器:
var tableProto = new Element('table', { 'class':'hide-on-screen'} ).update('<thead><tr><th>Situation Task</th><th>Action</th><th>Result</th></tr></thead><tbody><tr><td>a</td><td>b</td><td>c</td></tr></tbody>');
由于“class”而导致错误是JavaScript中的保留字。卫生署!
对于那些不提供实际代码的人来说,这是一个教训!
其他提示
如果原型'.update()方法在内部尝试设置.innerHTML,它将在IE中失败。在IE中,表元素的.innerHTML只读。
来源:
http:// webbugtrack .blogspot.com / 2007/12 /错误-210-NO-innerHTML的支撑上-tables.html
不隶属于 StackOverflow