qq_愁怅_03698152
2016-09-25 14:42
求诸位大神详解
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>
改成这样还是不行 该咋办了?
没有将新创建的元素重新设置ID,应该在createElemrnt之后给新标签添加id:newnode.setAttribute("id", "oldnode");
大小写B有问题吧
JavaScript进阶篇
468195 学习 · 21891 问题
相似问题