DOM innerHTML重复问题

时间:2010-04-12 10:06:47

标签: jquery dom jquery-ui-accordion

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)= value进行更改;但它不会删除第一个div的第一个内容。

DOM javascript中是否有任何content.clear方法?

THX

P.S。从document.getElementById(city)返回的div是一个jquery accordion div。

1 个答案:

答案 0 :(得分:1)

在DOM中(由浏览器实现,innerHTML在HTML5之前不是标准的,但是由所有人实现)设置元素的innerHTML将删除它的所有内容。 innerHTML和outerHTML之间的区别在于对于outerHTML,包含了标记本身。因此,外部HTML可用于替换标签。由于内容属于元素类型,因此无论如何都不想使用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))