为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样不能输出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


正在回答

5 回答

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

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

0 回复 有任何疑惑可以回复我~

你好!

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

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


写在外面为什么不行?

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

所以要写在里面。

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

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

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

     p1.className="one";

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





0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

慕UI9843876

希望答案被采纳一下。
2016-06-06 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

昀韶3351233 提问者

function add(){ var p1 = document.getElementById("p1"); p1.className="one"; } document.write("此段样式名称为:"+p1.className+"<br>"); 这段代码我是这么想的,P1原本是不带css样式的,但是在函数add()中它不是给p1设定了样式one吗? 讲道理执行到document.write的时候不应该也是输出p1被className修改后的样式名吗
2016-06-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信