阿钰12346
2018-08-18 20:30
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<div><b id="oldnode">JavaScript</b>是一个很常用的技术,为网页添加动态效果。</div>
<a href="javascript:replaceMessage()"> 将加粗改为斜体</a>
<script type="text/javascript">
function replaceMessage(){
if(document.getElementsByTagName("div").childNodes.nodeName=='b'){
var newnode = document.createElement("i");
var newnodeText = document.createTextNode("JavaScipt");
newnode.appendChild(newnodeText);
var oldNode = document.getElementById("oldnode");
oldNode.parentNode.replaceChild(newnode,oldNode);}
else{
var oldNode = document.createElement("b");
var oldNodeText = document.createTextNode("JavaScipt");
oldNode.appendChild(oldNodeText);
newnode.setAttribute("id","newnode");
var newnode = document.getElementById("newnode");
newnode.parentNode.replaceChild(oldNode,newnode);}
}
}
</script>
</body>
</html>
你的代码有几处错误,第一:document.getElementsByTagName返回的是数组,不能直接.childNodes。childNodes返回的也是数组,不能直接.nodeName。
第二:nodeName返回的名字是大写。
以上两点更正后的代码:document.getElementsByTagName("div")[0].childNodes[0].nodeName=='B'。
第三:else的最后一句代码多了一个花括号。
是要判断第一个子节点 if(document.getElementsByTagName("div")[0].childNodes.nodeName=='b')
JavaScript进阶篇
468190 学习 · 21891 问题
相似问题