为什么输出格式是这样?

来源:9-6 setAttribute()方法

Justeasy

2018-01-24 11:03

http://img.mukewang.com/5a67f72900012c9601550226.jpg




<!DOCTYPE HTML>

<html>

<head>

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

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

</head>

<body>

  <p id="intro">我的课程</p>  

  <ul>  

    <li title="JS">JavaScript</li>  

    <li title="JQ">JQuery</li>  

    <li title="">HTML/CSS</li>  

    <li title="JAVA">JAVA</li>  

    <li title="">PHP</li>  

  </ul>  

  <h1>以下为li列表title的值,当title为空时,新设置值为"WEB前端技术":</h1>

<script type="text/javascript">

  var Lists=document.getElementsByTagName("li");

  for (var i=0; i<Lists.length;i++)

  {

       var text = Lists[i].getAttribute("title");

    document.write(text+"<br />");

    if(text=="")

    {

      Lists[i].setAttribute("title","WEB前端技术");

    document.write(Lists[i].getAttribute("title")+"<br>");

    //  document.write("aaa"+"<br />");

    }

  }

</script>

</body>

</html>



代码如上:为啥会空多一行输出,我测试过如果输出语句是放在IF里面的话会出现这种情况,否则不会。

写回答 关注

2回答

  • 慕夕
    2018-01-25 11:27:10
    已采纳

       var text = Lists[i].getAttribute("title");

        document.write(text+"<br />");//当i循环为2和4时,text="",此时输出空+换行(相当于document.write(""+"<br />")),所以会空出一行。

    把这一行写在if-else语句的else里就不会空出一行

    for (var i=0; i<Lists.length;i++)

      {

           var text = Lists[i].getAttribute("title");

        if(text=="")

        {

          Lists[i].setAttribute("title","WEB前端技术");

        document.write(Lists[i].getAttribute("title")+"<br>");

        //  document.write("aaa"+"<br />");

        }else{

        document.write(text+"<br />");

        }

      }


  • 慕勒7123956
    2018-01-25 11:25:52

     var text = Lists[i].getAttribute("title");

        document.write(text+"<br />");

    就这两行,你的就算text是空的,也会输出一次

    Justea...

    非常感谢

    2018-01-25 14:58:29

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题