关于或许对象的问题
来源:6-7 编程练习
慕仙0287733
2020-04-20 21:12:54
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title> arguments</title>
</head>
<body>
<p id="test" style="background-color: red; color: blue;">我是一个段落!</p>
<script type="text/javascript">
// 在此处补充代码
var p=document.getElementById('test');
function css() {
if(arguments.length==3){
arguments[0].setAttribute(arguments[1],arguments[2]);
}
else if(arguments.length==2){
return arguments[0].getAttribute(arguments[1]);
}
else {
throw new Error('参数只能为2个或者3个')
}
}
css(p,'id','a');
css(p,'id','js');
console.log(p);
</script>
</body>
</html>
请老师检查下代码, 然后有个问题, 就是首先执行的css(p,'id','a');不是已经将p元素的id改了吗, 那改了id之后前面的p=document.getElementById('test');不就获取不到p这个DOM对象了吗, 为什么后面css(p,'id','js');中p指代的还是之前的DOM对象
1回答
同学你好,这里要求获取style中的样式,如下获取不到:
这是因为样式是style属性的属性值,getAttribute需要通过style属性获取属性值。建议如下修改:
另外,同学的疑惑解答如下:
这是因为获取dom对象放在了改变id值前面,代码是顺序执行的。刚开始已经通过id.test获取到了dom对象,并赋值给了变量p。所以此时p表示的就是p元素,除非后面手动修改变量p的值,不然它是不会变的哦。后面只是修改了p元素的id值,并不会影响到变量p的值。如果说在修改id之后再重新获取,此时才会获取不到。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题