Scny
2015-12-12 16:16
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>className属性</title>
<style>
body{ font-size:16px;}
.one{
border:1px solid #eee;
width:230px;
height:50px;
background:#ccc;
color:red;
}
.two{
border:1px solid #ccc;
width:230px;
height:50px;
background:#9CF;
color:blue;
}
</style>
</head>
<body>
<p id="p1" > JavaScript使网页显示动态效果并实现与用户交互功能。</p>
<input type="button" value="添加样式" onclick="add()"/>
<p id="p2" class="one">JavaScript使网页显示动态效果并实现与用户交互功能。</p>
<input type="button" value="更改外观" onclick="modify()"/>
<script type="text/javascript">
document.write("<br />"+"p2的值为:"+p2.classNmae)
function add(){
var p1 = document.getElementById("p1");
p1.className="one";
}
function modify(){
var p2 = document.getElementById("p2");
p2.className="two";
}
</script>
</body>
</html>
请问为什么它是显示(p2的值为:undefined) 而不是显示p2具体的className值呢?请问哪里写错了吗?
大婶告诉你,你这个写法是错误的,本来应该报错的,但是你歪打正着,输出了undefined。。
大婶为啥要这样说的?
因为p2是一个id,然后在某些浏览器下(比如chrome)有中快捷写法,就是可以直接用id值来代表dom元素。。
所以, p2.className
相当于 var p2 = document.getElementById('p2');
p2.className
看明白了吧?就是一种简写。不支持这种写法的浏览器会报错。。
假设你知道这种简写,你是故意这样写的,那么我接着往下说为什么是undefined,
因为代码执行到 document.write("<br />"+"p 2 的 值 为:"+p2.classNmae) 这句的时候,p2根本没有className属性啊!!!所以不是undefined才怪嘞。。
虽然你写了一个add方法来添加className属性,但是这时候这个add方法还没执行。。
你写错了 p2.className 你写成了p2.classNmae
谢啦~ 我还想请教一下大婶我这个写法是错误的是简写可能有些浏览器不支持,那正确的写法是怎么样的呢?
再次感谢!
JavaScript入门篇
739817 学习 · 9566 问题
相似问题