DOM innerHTML Повторяющаяся проблема - PullRequest
0 голосов
/ 12 апреля 2010
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.

Есть ли какой-либо метод content.clear в JavaScript DOM?

thx

ps div, который возвращается изdocument.getElementById (city) - это аккордеонный блок jquery.

1 Ответ

1 голос
/ 12 апреля 2010

В DOM (как реализовано в браузерах, innerHTML не является стандартным до HTML5, но реализован всеми) установка innerHTML элемента удалит весь его контент. Разница между innerHTML и outerHTML заключается в том, что для externalHTML включен сам тег. Таким образом, OuterHTML можно использовать для замены тега. Поскольку контент относится к элементу типа, вы все равно не хотите использовать 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))
...