关于或许对象的问题

来源: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回答

好帮手慕夭夭

2020-04-21

同学你好,这里要求获取style中的样式,如下获取不到:

http://img.mukewang.com/climg/5e9e545d09c3fad106230098.jpg

这是因为样式是style属性的属性值,getAttribute需要通过style属性获取属性值。建议如下修改:

http://img.mukewang.com/climg/5e9e552c0922bdb011000457.jpg

另外,同学的疑惑解答如下:

这是因为获取dom对象放在了改变id值前面,代码是顺序执行的。刚开始已经通过id.test获取到了dom对象,并赋值给了变量p。所以此时p表示的就是p元素,除非后面手动修改变量p的值,不然它是不会变的哦。后面只是修改了p元素的id值,并不会影响到变量p的值。如果说在修改id之后再重新获取,此时才会获取不到。

http://img.mukewang.com/climg/5e9e562309daa43307980462.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 14456 问题

查看课程