问答详情
源自:3-6 控制类名(className 属性)

为什么这样不能输出class属性?

<script type="text/javascript">

  function add(){

     var p1 = document.getElementById("p1");

     p1.className="one";

          

  }

       document.write("此段样式名称为:"+p1.className+"<br>");

</script>

//以上为什么不能输出P1的class属性;

<script type="text/javascript">

  function add(){

     var p1 = document.getElementById("p1");

     p1.className="one";

        document.write("此段样式名称为:"+p1.className+"<br>");

  }

</script>

而这样虽然能输出class属性,但是会使整个页面的文本只剩下此段样式名称为:one


提问者:昀韶3351233 2016-06-06 00:09

个回答

  • 慕侠9284689
    2016-06-12 21:54:38

    第一段代码中为什么输出不了p1的值,这是因为你在全局的环境中输出函数体内的变量,p1的作用域仅在函数体add()中,在全局中是没有定义的,所以输出不了,p1没有定义,自然为空。

    第二段代码你只给了一半,把HTML代码中完整贴出来才好分析,怎么调用这个函数add()的地方没有说明白。

  • 我要开发地图系统
    2016-06-11 14:59:15

    你好!

          把 document.write 改成 alert 就可以看到你想要的结果。

    当然,要写在函数里才行。


    写在外面为什么不行?

    因为,写在外面的话,函数还没有执行,它就经执行了,所以看不到结果;而且等函数执行完了,函数结果已经销毁了,它还是没能拿到结果。

    所以要写在里面。

    那有没有别的方法呢?   有!

    那就是不要函数——直接写

         var p1 = document.getElementById("p1");

         p1.className="one";

         document.write("此段样式名称为:"+p1.className";





  • Cassie_yu
    2016-06-06 16:56:20

    因为你只声明了一个函数,而没有去调用执行。

    在1-9的学习中有提到过 “函数定义好后,是不能自动执行的“

  • 慕UI9843876
    2016-06-06 16:38:55

    你把完整的代码给我吧,你这给一半儿,也不好看,多用DW试验一下就明白了

  • 慕UI9843876
    2016-06-06 00:59:31

    注意:我试了一下,两种写法都不能输出P1的class属性。函数定义好后,是不能自动执行的。写在函数中的代码,是在某一条件下需要被调用(例如,点击事件)。所以,具体的写法是:将获取对象和输出属性代码放到函数外,将要改变的 class属性放在函数中去处理。例如,下面的这种处理:http://img.mukewang.com/57545a6e0001282507980838.jpg