2013-09-25 109 views
2

內容我不知道JavaScript,我一直在尋找這個答案的每一個地方。我想重複我的網頁中的內容。 html和內容直接來自經紀人。使用getElementById重複頁面

結果想的是:

Click the button to change the text in this paragraph. 
Click the button to change the text in this paragraph. 

我的HTML是:

<!DOCTYPE html> 
<html> 
<body> 
<p id="demo">Click the button to change the text in this paragraph.</p> 
<script language="javascript" type="text/javascript"> 
var elem = document.getElementById('demo').setAttribute('id', 'nextstep'); 
document.write(elem); 
</script> 
</body> 
</html> 

我所得到的是:

Click the button to change the text in this paragraph. 
undefined 

有人能幫點我朝着正確的方向?提前致謝!

回答

3

我不相信你想要使用document.write。我覺得這是你追求的:

<script language="javascript" type="text/javascript"> 
    // this gets the element 
    var elem = document.getElementById('demo'); 
    // this copies the entire element, including the id 
    var newElem = elem.cloneNode(true); 
    // this sets a new id 
    newElem.setAttribute('id', 'nextstep'); 
    // generic way to make sure you insert properly 
    var before = elem.nextSibling; 
    // there's no insertAfter, only insertBefore, which is why we found the before 
    elem.parentNode.insertBefore(newElem, before); 
</script> 

FIDDLE

+0

我可以將最後兩行合併爲一行:'elem.parent.insertBefore(newElem,elem.nextSibling);',但每行每一步最有幫助。在這個特定的實例中,我可以簡單地使用'document.body.appendChild(newElem);',而不是使用'insertBefore',但認爲最好使用泛型方法。 –

+1

+1比我的答案要好得多。 –

+0

感謝您的回答!雖然不太清楚爲什麼腳本不能在jsFiddle上運行。對我可能做錯了什麼想法? – Joyce

1

你需要抓住innerHTML並設置它:

var elem = document.getElementById('demo').innerHTML; 
document.write(elem); 

要小心的是,document.write是要覆蓋一切..

+0

您的代碼沒有工作!我的目標是給複製的elem一個新的id,以便我可以調整它(調整位置等)而不改變原始div的id。我會怎麼做呢? – Joyce

1

要設置elemsetAttribute的返回值,這是不確定的因爲它什麼都不返回。

更改代碼:

var elem = document.getElementById('demo'); 
elem.setAttribute('id', 'nextstep'); 
document.write(elem.innerHTML); 

示例 - http://jsfiddle.net/P8EcL/

這仍然不正是你想要的,因爲它是p標籤的內容的副本,而不是標籤本身結束。

Scott Mermelstein's答案是你想要的。

+0

+1用於解釋undefined來自何處。 –

+0

你的代碼確實有效!我的目標是給複製的elem一個新的id,以便我可以調整它(調整位置等)而不改變原始div的id。我會怎麼做呢? – Joyce

+0

@Joyce Scott的答案應該做你想做的。 –

0
var elem = document.getElementById('demo').innerHTML; 
document.write(elem); 

我不知道爲什麼你要設置的原始DIV一個新的ID,並期望它返回HTML,但它不會工作;)

1

如果妳需要得到這個

<p id="demo">Click the button to change the text in this paragraph.</p> 
<p id="nextstep">Click the button to change the text in this paragraph.</p> 

嘗試

<!DOCTYPE html> 
<html> 
<body> 
<p id="demo">Click the button to change the text in this paragraph.</p> 
<script language="javascript" type="text/javascript"> 
    var elem = document.getElementById('demo'); 
    var newElem = document.createElement('div'); 
    newElem.innerHTML = "<p id='nextstep'>" + elem.innerHTML + "</p>"; 
    document.write(newElem.innerHTML); 
</script> 
</body> 
</html> 
+0

如果您不想使用文檔編寫,請使用 document.getElementsByTagName('body')[0] .appendChild(newElem); – tetta

+0

這工作!非常感謝你們......這個支持系統真棒。你們好棒! – Joyce

相關問題