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