<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
第一段代码中为什么输出不了p1的值,这是因为你在全局的环境中输出函数体内的变量,p1的作用域仅在函数体add()中,在全局中是没有定义的,所以输出不了,p1没有定义,自然为空。
第二段代码你只给了一半,把HTML代码中完整贴出来才好分析,怎么调用这个函数add()的地方没有说明白。
你好!
把 document.write 改成 alert 就可以看到你想要的结果。
当然,要写在函数里才行。
写在外面为什么不行?
因为,写在外面的话,函数还没有执行,它就经执行了,所以看不到结果;而且等函数执行完了,函数结果已经销毁了,它还是没能拿到结果。
所以要写在里面。
那有没有别的方法呢? 有!
那就是不要函数——直接写
var p1 = document.getElementById("p1");
p1.className="one";
document.write("此段样式名称为:"+p1.className";
因为你只声明了一个函数,而没有去调用执行。
在1-9的学习中有提到过 “函数定义好后,是不能自动执行的“
你把完整的代码给我吧,你这给一半儿,也不好看,多用DW试验一下就明白了
注意:我试了一下,两种写法都不能输出P1的class属性。函数定义好后,是不能自动执行的。写在函数中的代码,是在某一条件下需要被调用(例如,点击事件)。所以,具体的写法是:将获取对象和输出属性代码放到函数外,将要改变的 class属性放在函数中去处理。例如,下面的这种处理: