我想知道在包含element-div的表中创建表时IE是否不支持DOM方法。因为我在呈现JavaScript时看不到表格。请参阅以下内容:
在HTML中:
<div id="pageHeader">
<div id="filters">
-----
</div>
</div>
在JavaScript中:
我创建了一个名为“分类”的div。然后我有两个子div。
<div id="titleClass">
<div id="namesClass">
另外,我在第2页有一个表。问题是在屏幕上看不到div number 2及其子表。
有任何解决方案吗?
以下是代码:假设已经定义了“分类”。
function loading(){
initClassifications();
}
function initClassifications() {
if (classifications.length > 0) {
var el = document.createElement("div");
el.setAttribute("id", "classifications");
ul1 = document.createElement("ul");
startIndex1 = 0;
var pageHeader = document.getElementById("pageHeader");
var titleElement = document.createElement("span");
var titleText = document.createTextNode("classifications");
titleElement.appendChild(titleText);
var lstElement = document.createElement("div");
lstElement.setAttribute("id", "titleClass");
lstElement.appendChild(titleElement);
el.appendChild(lstElement); //add title to classifications
var names = document.createElement("div"); // create div for classifications
names.setAttribute("id", "namesClass");
var tbl = document.createElement("table");
var tr = document.createElement("tr");
var td = document.createElement("td");
for (var i = 0 ; i < classifications.length && i< 10 ; i++) {
var li = document.createElement("li");
ul1.appendChild(li);
names.appendChild(ul1);
var link = document.createElement("a");
link.setAttribute("href", classifications[i][0]);
var name = document.createTextNode(classifications[i][1]);
link.appendChild(name);
li.appendChild(link);
startIndex1++;
}
td.appendChild(ul1);
tr.appendChild(td);
if (startIndex1 < classifications.length) {
var span = document.createElement("span");
var link = document.createElement("a");
link.setAttribute("href", "javascript:addClassifications();");
var text = document.createTextNode("more...");
link.appendChild(text);
span.appendChild(link);
moreClass = document.createElement("div"); //more div for moving
moreClass.setAttribute("id", "moreClass");
moreClass.appendChild(span);
el.appendChild(moreClass);
var td1 = document.createElement("td");
td1.setAttribute("valign", "bottom");
td1.appendChild(moreClass);
tr.appendChild(td1);
}
tbl.appendChild(tr);
el.appendChild(tbl);
names.appendChild(tbl);
el.appendChild(names);
pageHeader.appendChild(el);
var filter = document.getElementById("filters");
pageHeader.insertBefore(el, filter); //insert listingnames before filters
}
}
function addClassifications() {
var maxIndex = startIndex1 + 10;
for (var i = startIndex1; i < classifications.length && i<maxIndex; i++)
{
var li = document.createElement("li");
ul1.appendChild(li);
var link = document.createElement("a");
link.setAttribute("href", classifications[i][0]);
var name = document.createTextNode(classifications[i][1]);
link.appendChild(name)
li.appendChild(link);
startIndex1++;
}
//if (startIndex1 >= classifications.length)
// $$("#moreClass").remove();
}
答案 0 :(得分:1)
你已经给出了这些div id,并且这些id包含“Class”这个词,这表明你的CSS可能是问题的一部分。但由于你没有发布CSS,所以有点难以理解。
编辑:好的,现在您已经发布了代码。 有点长。为了您和我们的利益,您应该尝试找到重现您尝试解决的问题的最小可能示例。
例如,您建议IE不允许您通过JavaScript向DOM添加表。但是这里有一些我刚刚攻击的JavaScript,它确实为DOM添加了一个表。 (该表有一个单元格,其内容为Foo!
)因此,您尝试解决的问题可能在其他地方。
<script>
var div = document.createElement('div');
div.id = 'classifications';
var child1 = document.createElement('div');
child1.id="titleClass";
div.appendChild(child1);
var child2 = document.createElement('div');
child2.id="namesClass";
div.appendChild(child2);
child2.innerHTML = '<table border="1"><tr><td>Foo!</td></tr></table>';
document.body.appendChild(div);
</script>
但我注意到的一件事是你使用setAttribute
来设置元素的id。在某些浏览器中,我认为IE是一个,这不起作用。试试吧
elem.id = <id>
看看是否有帮助。