IE中的DOM问题

时间:2009-07-29 03:25:05

标签: javascript internet-explorer dom

我想知道在包含element-div的表中创建表时IE是否不支持DOM方法。因为我在呈现JavaScript时看不到表格。请参阅以下内容:

在HTML中:

<div id="pageHeader">
    <div id="filters">
       -----
    </div>
</div>

在JavaScript中:

我创建了一个名为“分类”的div。然后我有两个子div。

  1. <div id="titleClass">
  2. <div id="namesClass">
  3. 另外,我在第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();
    }
    

1 个答案:

答案 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>

看看是否有帮助。