課程
/前端開發
/JavaScript
/JavaScript進階篇
求諸位大神詳解
2016-09-25
源自:JavaScript進階篇 9-15
正在回答
replaceChild(newnode,oldnode)每次使用的時候,所有與之相關的屬性內容被清空,也就是說你第一次替換之后,那個位置的id屬性已經清空了,變成了<i>JavaScript</i>,你已經無法通過oldnode=document.getElementById("oldnode")獲取節點了,所以每次替換著以后你要給替換上的節點添加id屬性,具體如下面代碼
--------------------------------------------------------------
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>childNodes</title></head><body><script type="text/javascript">function replaceMessage(){var change=document.getElementById("change");var oldnode=document.getElementById("oldnode");if (oldnode.nodeName=="B"){var newnode=document.createElement("i");newnode.innerHTML=oldnode.innerHTML;oldnode.parentNode.replaceChild(newnode,oldnode);oldnode=null;newnode.setAttribute("id","oldnode");change.innerHTML="斜體改粗體";}else {var newnode=document.createElement("b");newnode.innerHTML=oldnode.innerHTML;oldnode.parentNode.replaceChild(newnode,oldnode);oldnode=null;newnode.setAttribute("id","oldnode");change.innerHTML="粗體改斜體";}}</script><b id="oldnode">Java</b><br><a href="javascript:replaceMessage()" id="change">粗體改斜體</a></body></html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>childNodes</title>
</head>
<body>
<script type="text/javascript">
function replaceMessage(){
var change=document.getElementById("change");
var oldnode=document.getElementById("oldnode");
if (oldnode.nodeName=="B"){
var newnode=document.createElement("i");
newnode.innerHTML=oldnode.innerHTML;
oldnode.parentNode.replaceChild(newnode,oldnode);
oldnode=null;
newnode.setAttribute("id","oldnode");
change.innerHTML="斜體改粗體";
}
else {
var newnode=document.createElement("b");
change.innerHTML="粗體改斜體";
</script>
<b id="oldnode">Java</b><br>
<a href="javascript:replaceMessage()" id="change">粗體改斜體</a>
</body>
</html>
qq_愁悵_03698152 提問者
改成這樣還是不行?該咋辦了?
沒有將新創建的元素重新設置ID,應該在createElemrnt之后給新標簽添加id:newnode.setAttribute("id", "oldnode");
大小寫B有問題吧
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界
2 回答將粗體改為斜體?
6 回答如果要將斜體改為粗體
2 回答為什么會粗體變斜體呢
3 回答粗體變斜體求解
1 回答為啥不能變成斜體
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-09-30
replaceChild(newnode,oldnode)每次使用的時候,所有與之相關的屬性內容被清空,也就是說你第一次替換之后,那個位置的id屬性已經清空了,變成了<i>JavaScript</i>,你已經無法通過oldnode=document.getElementById("oldnode")獲取節點了,所以每次替換著以后你要給替換上的節點添加id屬性,具體如下面代碼
--------------------------------------------------------------
2016-09-26
2016-09-26
沒有將新創建的元素重新設置ID,應該在createElemrnt之后給新標簽添加id:newnode.setAttribute("id", "oldnode");
2016-09-26
大小寫B有問題吧