2012-11-27 67 views
0

這是Removing <span> tag while leaving content intact, with just javascript的Javascript文字插入到DIV

一個後續問題如果我使用跨度突出在一個頁面的文本,它打破了內容到新的節點。然後,當我使用replaceChild刪除高亮區跨度時,節點保持分離。我想將原始文本合併回單個文本節點,而不是三個文本節點 - 突出顯示之前的文本,之前突出顯示的文本以及突出顯示後的文本結束。這可能嗎?

+0

請發佈您的代碼... –

+0

您不說明您是否可以使用jQuery。如果是這樣看jQuery.unwrap ... http://api.jquery.com/unwrap/ –

回答

2

吉姆的建議類似,但可容納IE:

containerElement.innerHTML = containerElement.textContent || containerElement.innerText; 

或者更長的版本:

var text = containerElement.textContent || containerElement.innerText; 

while (containerElement.firstChild) { 
    containerElement.removeChild(containerElement.firstChild); 
} 
containerElement.appendChild(document.createTextNode(text)); 

我認爲首先是簡單的。

+0

選擇此項作爲答案,因爲它適用於IE並且可以使用循環版本手動停止某個節點。感謝RobG和Jim的回答。我使用這個只包含文本的元素。爲了引用任何需要在元素中使用其他元素(我的元素中有一個元素都是pre)的元素,containerElement.normalize()會合並相鄰的文本節點並刪除空的元素,並保留所有其他標記不變。 – jonhopkins

3

你可以嘗試像

containerElement.innerHTML = containerElement.textContent; 

不知道會前9個工作在IE瀏覽器,但因爲的textContent的。

+0

這似乎可以工作。但是在容器元素有其他孩子的標籤需要保持不變的情況下呢?使用這個想法,我嘗試了while循環(下一個節點也是一個text_node)並追加到一個字符串,然後使用innerHTML =字符串,但我無法使它工作。我不是故意問太多,我只是想弄清楚幾個小時,而我的大腦已經疲憊不堪。 – jonhopkins