2017-05-06 164 views
0

我的代碼如下創建和附加一個DOM元素與其它元素

;(function(window){ 
    var $description_window= document.querySelector('.mg_post_description'), 
     $headings= document.querySelectorAll('.mg_blog_main_content h3'), 
     $paragraph = document.createElement('p'); 
     for (var j = 0; j < $headings.length; j++) { 
      var $headingChildren=$headings[j].cloneNode(true).childNodes; 
      $paragraph.appendChild($headingChildren[j]); 
     } 
     $description_window.append($paragraph); 
})(window); 

這裏就是我想要做的是內容;複製內容框的h3標籤。然後創建一個paragraph元素。然後將p標籤附加到收集的h3標籤中。但是,在運行此操作時出現以下錯誤。

無法執行appendChildNode:參數1不是Node類型。

;(function(window){ 
 
    var $description_window= document.querySelector('.post_description'), 
 
    
 
    $headings= document.querySelectorAll('.post_description h3'), 
 
    $paragraph = document.createElement('p'); 
 
    
 
    for (var j = 0; j < $headings.length; j++) { 
 
    
 
     var $headingChildren=$headings[j].cloneNode(true).childNodes; 
 
      $paragraph.appendChild($headingChildren[j]); 
 
     } 
 
     
 
     $description_window.append($paragraph); 
 
     
 
})(window);
.post_description{ 
 

 
    width:200px; 
 
    height:200px; 
 
    background-color:#555; 
 
    position:absolute; 
 
    top:10%; 
 
    right:8%; 
 
    
 
} 
 

 
.post_description a { 
 
    
 
    color:white; 
 
} 
 

 
.main_body{ 
 

 
    padding-top:40%; 
 

 
}
<div class="main_body"> 
 
    <h3>Testing one</h3> 
 
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p> 
 

 
    <h3>Testing two</h3> 
 
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p> 
 

 

 
    <h3>Testing three</h3> 
 

 
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p> 
 

 

 
    <h3>Testing four</h3> 
 

 
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p> 
 

 
</div> 
 

 
<div class="post_description"></div>

可能有人請解釋爲什麼發生這種情況,如何解決這個

感謝

+0

可以共享元素 '內容框' HTML? –

+0

內容框的元素是簡單的h3標題和p塊文本。我試圖提取h3元素,並將它們顯示爲另一個div中的段落元素。 – jeff

+0

你可以請創建一個jsfiddle – brk

回答

1

爲了實現預期的結果,請使用下列選項

function addElem() { 
    var mElem = document.querySelector('.mg_post_description') 
    var hElems = document.getElementsByTagName('H3'); 
    var node = document.createElement("P"); 
    for (var i = 0; i < hElems.length; i++) { 

     var textnode = document.createTextNode(hElems[i].innerHTML); 
     var cloneElem = node.cloneNode(true); 
     cloneElem.appendChild(textnode); 
     mElem.appendChild(cloneElem); 
    } 
}; 

addElem() 

Codepen- https://codepen.io/nagasai/pen/YVEzdJ

+0

它確實有效。但是,我可以問我是否可以通過修改我在此發佈的原始代碼來做同樣的事情。感謝和期待 – jeff

+0

更新了codepen-https://codepen.io/nagasai/pen/ZKaEZe,希望這對你有用:) –

+0

謝謝你的幫助 – jeff

0

var d = document.querySelector('.desc'), 
 
    h = document.querySelectorAll('.main h3'); 
 

 
h.forEach(function(n) { 
 
    var p = document.createElement('p'); 
 
    p.innerHTML = n.cloneNode(true).innerHTML || ''; 
 
    d.append(p); 
 
});
.desc { 
 
    color: red; 
 
}
<div class="main"> 
 
    <h3>First</h3> 
 
    <h3>Second</h3> 
 
    <h3>Third</h3> 
 
</div> 
 

 
<div class="desc"> 
 
</div>

+0

這一個複製新div中的h3元素,而不是p元素。 – jeff

+0

您能否在p標籤中生成重複元素?感謝 – jeff

+0

這樣的事情? – Dylan