2015-07-06 69 views
0

我有这个函数,我想创建一个带有两个子div的容器div,一个是容器的标题,另一个是内容。出于某种原因,当我在jsfiddle中测试时,这不起作用。javascript-DOM修改疯狂

此外,我想知道如何将这个整个容器追加到具有在我的HTML特定类的div。

var add = function(title, content) { 
 
    var addContainerBody = document.createElement("DIV"); 
 
    addContainerBody.className = "c-body"; 
 
    var addTitle = document.createElement("DIV"); 
 
    var titleText = document.createTextNode(title); 
 
    addTitle.appendChild(titleText); 
 
    addTitle.className = "title"; 
 
    var addContent = document.createElement("DIV"); 
 
    var contentText = document.createTextNode(content); 
 
    addContent.className = "content"; 
 
    addContainerBody.appendChild(addTitle); 
 
    addContainerBody.appendChild(addContent); 
 
    document.body.appendChild(addContainerBody); 
 
}; 
 

 
// Callin it // 
 

 
add("Title","Text");

正如你所看到的,它输出只有标题,没有别的。我可能错过了一些非常明显的东西。这里有什么问题?

+0

在这里使用shadowDOM会更有效,如果你想抽象为框架,ReactJS会是最简单的。 –

+0

我不知道那是什么,对于这个项目我不能使用单独的框架或插件。 –

+0

https://developer.mozilla.org/en-US/docs/Web/Web_Components –

回答

2

我可能错过了一些非常明显的东西。

您永远不会将contentText附加到addContent元素。

function add(title, content) { 
 
    var addContainerBody = document.createElement("DIV"); 
 
    addContainerBody.className = "c-body"; 
 

 
    var addTitle = addContainerBody.appendChild(document.createElement("DIV")); 
 
    addTitle.className = "title"; 
 
    addTitle.appendChild(document.createTextNode(title)); 
 

 
    var addContent = addContainerBody.appendChild(document.createElement("DIV")); 
 
    addContent.className = "content"; 
 
    addContent.appendChild(document.createTextNode(content)); 
 

 
    document.body.appendChild(addContainerBody); 
 
} 
 

 
add("Title","Text");

我想知道如何这整个容器附加到一个div在我的HTML一个特定的类。

您可以使用document.getElementsByClassNamedocument.querySelector以获取与类的DIV,然后追加到它,而不是document.body。但请确保在执行代码之前选择that the element is already available

+0

这仍然不能回答我的第二个问题。 –

+0

@ SebastianOlsen:呃,我没有发现。最好每个帖子只问一个问题:-) – Bergi

+0

我试着用google搜索它并找不到答案,并且stackoverflow只会让你在设定的时间间隔内提出一个问题。 –