2012-07-18 38 views
2
<div id='container'> 
    This is some text 
    <span> more text </span> 
</div> 

如何在不影響「span」的情況下只更新文本部分(「這是一些文本」)?如何僅更新DIV文本而不更新任何其他子節點

+0

你打算如何選擇它? JS? jQuery的? – zen 2012-07-18 19:15:26

+0

這甚至有效嗎?我不是專家,雖然所以我不知道,但對我來說,文本應該在某種標籤,一個div,p,span等。 – 2012-07-18 19:16:00

+0

想不到任何方式,除了骯髒的黑客。就像存儲子節點一樣,替換文本並再次插入子節點 – 2012-07-18 19:16:16

回答

1

純javascript溶液

DEMO

var fieldNameElement = document.getElementById('container'); 

fieldNameElement.removeChild(fieldNameElement.firstChild); 
var newText = document.createTextNode("New Text"); 
fieldNameElement.insertBefore(newText , fieldNameElement.firstChild); 

Jquery的

DEMO

$('#container').each(function(i,el) { 
    el.firstChild.data = 'New Title Goes Here'; 
}); 
+0

它似乎並沒有爲我工作。 – 2012-07-18 19:29:25

+0

@PrakashRaman - 嘿嘗試演示其工作的人... – 2012-07-18 19:33:55

+0

@BrianWarshaw - 認爲它的炒作需要,它會被選中... – 2012-07-18 20:15:02

1
var childNodes = elem.childNodes; 
for (var i = 0; i < childNodes.length; i++) { 
    var child = childNodes[i]; 

    if (child.nodeName == "#text") { 
     elem.removeChild(child); 
     i--; 
    } 
} 

在IE7中工作(這就是我得到的)。您可能需要爲不同的瀏覽器調整nodeName檢查,但整體概念是相同的:不檢查firstChild,通過nodeName屬性檢查節點的類型。

0

用段落標籤格式化它最簡單,並使用javascript來更改段落標記的innerHTML。這是僅改變文本的最簡單和最短的方式。

<div id='container'> 
<p id="text">This is some text</p> 
<span> more text </span> 
</div> 
相關問題