代码之家  ›  专栏  ›  技术社区  ›  Kubi

dom innerhtml复制问题

  •  0
  • Kubi  · 技术社区  · 14 年前
    function SwapPlans(city, id) {
        var tp = GetTravelPlanById(id);
        var content = MakeHTMLAccordionMe(tp.items[0]);
    
        document.getElementById(city).innerHTML = " ";
        document.getElementById(city).innerHTML = content.innerHTML;
        document.getElementById(city).outerHTML = " ";
        document.getElementById(city).outerHTML = content.outerHTML;
    }
    

    你好,

    我对上面的片段有问题。makeAccordionme函数返回 我想通过document.getElementByID(city)=值进行更改;但它不会删除第一个div的第一个内容。

    dom javascript中有content.clear方法吗?

    谢谢

    p.s.从document.getelementbyid(city)返回的div是一个jquery accordion div。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Paul de Vrieze    14 年前

    在dom中(由浏览器实现,innerhtml直到html5才是标准的,但由所有人实现),设置元素的innerhtml将删除它的所有内容。innerHTML和outerHTML的区别在于,outerHTML包含了标记本身。因此,outerHTML可用于替换标记。由于内容的类型是element,因此无论如何都不希望使用innerHTML,因此需要将其附加到所涉及的DOM元素。

    这可能有效:

    function SwapPlans(city, id) {
        var tp = GetTravelPlanById(id);
        var content = MakeHTMLAccordionMe(tp.items[0]);
        var city = document.getElementById(city);
    
        // Remove all children of the div
        while (city.hasChildNodes()) {
            city.removeChild(city.children.item(0));
        }
    
        // Add a child to the city, making sure that it belongs to this document. Instead
        // of blind importing you might also check it's ownership.
        city.appendChild(city.ownerDocument.importNode(content))