当尝试通过innerHTML 使用 JavaScript 动态添加表格元素时,无法在 IE7、IE8 和 IE9 中呈现
我在互联网上搜索了很多这个,但我被难住了。以下 Javascript 可在 Chrome、Firefox 和 Safari 中运行,但由于某种原因,它无法在 IE 7+ 中运行。我所说的“不起作用”是指当尝试添加表格元素时,浏览器/屏幕上没有显示任何内容。我使用了 IE 的内置开发工具,控制台中的调试器上没有显示任何内容。
简而言之,我要做的就是创建第一列中有一个复选框、第二列中有纯文本的表行。此外,整个方法是在 AJAX 事件之后调用的。
代码如下:
tdObjs[0].innerHTML = '<input type="checkbox" name="page" value="' + pageID + '"
onClick="fooFunction(\'' + pageID + '\', this,
\'_images/foo/' + pageID + '.png\', \'' + pageID
+ '\')" checked="yes">';
其中 pageID
是传递给此函数的变量(在本示例中,其 int
值为 5
)。 tdObjs
的定义如下:
var tdObjs = trObj.getElementsByTagName('TD');
trObj
被传递到该函数中。 trObj
确实显示在 IE 开发工具的 local
窗口中,因为它是在另一个函数中定义的,如下所示:
var tableObj = $('##FooTable')[0];
var trObj = document.createElement('tr');
trObj.appendChild(document.createElement('td'));
for (var i=0;i<2;i++)
trObj.appendChild(document.createElement('td'));
tableObj.appendChild(trObj);
return trObj;
有什么想法吗?先感谢您。
I've been searching the interweb a bunch for this one and I'm stumped. The following Javascript works in Chrome, Firefox, and Safari, but for whatever reason it is not working in IE 7+. What I mean by 'not working' is that when trying to add table elements, nothing shows up in the browser / on the screen. I've used IE's built-in Developer tools, and nothing shows up on the de-bugger in the Console.
In a nutshell, all I'm trying to do is create table rows that have a checkbox in the first column, and plain text in the second column. Also, this entire method is being called after an AJAX event.
Here is the code:
tdObjs[0].innerHTML = '<input type="checkbox" name="page" value="' + pageID + '"
onClick="fooFunction(\'' + pageID + '\', this,
\'_images/foo/' + pageID + '.png\', \'' + pageID
+ '\')" checked="yes">';
Where pageID
is a variable passed to this function (in this exact example, its an int
value of 5
). tdObjs
is defined by:
var tdObjs = trObj.getElementsByTagName('TD');
And trObj
is passed into this function. trObj
does show up in the local
window of the IE Developer Tools as it is defined in another function like so:
var tableObj = $('##FooTable')[0];
var trObj = document.createElement('tr');
trObj.appendChild(document.createElement('td'));
for (var i=0;i<2;i++)
trObj.appendChild(document.createElement('td'));
tableObj.appendChild(trObj);
return trObj;
Any ideas? Thank you in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 IE 中向表格添加行时,必须将它们添加到 tbody 中,例如
在上面的 HTML 中,浏览器将在表格和行元素之间添加一个 tbody 元素。 tbody 是强制性的,但标签是可选的。因此,要添加行,您必须执行以下操作:
克隆行并修改单元格内容可能比创建新行和单元格更有效。由你决定。
When adding rows to a table in IE, you must add them to the tbody, e.g.
In the above HTML, browsers will add a tbody element between the table and row elements. The tbody is mandatory but tags are optional. So to add rows you must do something like:
It may be more efficient to clone a row and modify the cell contents rather than making new rows and cells. It's up to you.