问答详情
源自:10-1 编程挑战

请问大佬为什么只能转换一次啊?头皮发麻!!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<script type="text/javascript">

      function replaceMessage(){

         var Ier=document.createElement("i");

         var Ber=document.createElement("b");

var Old=document.getElementsByTagName("div")[0].firstChild;

var OldHTML=Old.innerHTML ;

if(Old.tagName=="b"||"B"){

   Old.parentNode.replaceChild(Ier,Old);

   Ier.innerHTML=OldHTML ;

}

else if(Old.tagName=="i"||"I"){

   Old.parentNode.replaceChild(Ber,Old);

   Ber.innerHTML=OldHTML;

}

       }

  </script>

</head>

<body>

<div><b>JavaScript是一个很常用的技术,为网页添加动态效果。</b></div>

<br/>

<input type="button" value="加粗和斜体转换" onclick="replaceMessage()"/>

</body>

</html>


提问者:加了椰子汁的冰 2018-08-04 15:18

个回答

  • weibo_毕业后养只小狗_0
    2018-08-06 03:28:57
    已采纳

    "=="运算符的优先级比"||"高!

    你写的if语句的条件是 if(Old.tagName=="b"||"B") ,而字符串"B"等价于boolean的true,所以这个判断条件总是返回true。根本不会进行到else if()的分支。

    应该写成:

    if(Old.tagName=="b"||Old.tagName=="B")。

    else if(Old.tagName=="i"||Old.tagName=="I")。

    其他都没问题。