求解:下面代码为什不是将现有的title属性改变,而是在原有的属性后面添加了一个新的属性title,setAttribute不是可以将现有的属性改变或者将没有的属性添加进去吗?

来源:9-6 setAttribute()方法

油泼裤带面

2017-04-24 18:14

<!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=="JS")
    {
    Lists[i].setAttribute("title","WEB前端技术");
    document.write(Lists[i].getAttribute("title")+"<br>");
    }
  }
</script>
</body>
</html>



写回答 关注

4回答

  • 慕勒7123956
    2017-04-29 12:42:54
    已采纳

    因为你输出的是text,这个text变量没变啊,应该是

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


    油泼裤带面

    嗯,我得到我想要的东西了,只要把if语句里面的write移出来就可以了,text那个write取消就好了!感谢

    2017-04-29 12:49:47

    共 1 条回复 >

  • 慕勒7123956
    2017-04-29 12:45:04
    <!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");
        if(text=="")
        {
            Lists[i].setAttribute("title","WEB前端技术");
        
    
        }
        if(text=="JS")
        {
            Lists[i].setAttribute('title',"js被替换了")
        }
        document.write(Lists[i].getAttribute('title')+"<br>")
        
      }
    </script>
    </body>
    </html>


  • 慕勒7123956
    2017-04-29 11:57:59

    你上面已经有了一个documen.write()了,所以在判断之前就会输出啊

    油泼裤带面

    我刚才试了一下,就是说把if那段提前,将第一个write放在最后,按照JS从前到后的运行方法来说,应该是先修改后显示,但是结果还是一样的,title=JS属性还是会显示出来JS,这是为什么?

    2017-04-29 12:05:31

    共 1 条回复 >

  • 慕勒7123956
    2017-04-26 19:25:52

    并没有定义新属性啊,setAttribute修改的就是title的值啊,没有新定义title啊,一个Lists[i]只有一个title属性

    油泼裤带面

    它的输出结果是:JQ web前段技术开发 JS JAVA,上述代码我把title=JS不是已经改为“WEB前段技术开发”了吗?显示结果里面应该不会有JS才对,为什么还会出现JS?

    2017-04-29 11:47:29

    共 1 条回复 >

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题