javascript中无法设置 position js dom编程艺术第十章练习

题目描述

这是js dom编程艺术中的一个练习 想要一些动画效果 但是我无法用js设置 元素的 style 的属性;

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        function addLoadElement(func){
            var oldonload = window.onload;
            if(typeof window.onload != "function"){
                window.onload = func;
            }else{
                window.onload = function(){
                    oldonload();
                    func();
                }
            }
        }
        function positionMessage(){
            if(!document.getElementsByTagName) return false;
            if(!document.getElementsByTagName("p")) return false;
            var elem = document.getElementsByTagName("p");
            elem.style.position = "absolute";
            elem.style.top = "500px";
            elem.style.left = "100px";
            
        }
        addLoadElement(positionMessage);
        
    </script>
</head>
<body>
    <p>666666</p>

</body>

</html>

你期待的结果是什么?实际看到的错误信息又是什么?

问题描述

发生报错 [Web浏览器] "Uncaught TypeError: Cannot set property 'position' of undefined" /HelloHBuilder/new_file.html (22)
我想知道是哪里写错了 。

阅读 1.7k
2 个回答

getElementsByTagName返回的是一个数组,你那个return false也是没用的。

var elem = document.getElementsByTagName("p")[0]

在console输入
document.getElementsByTagName('p')然后回车,可以看到是一个HTMLCollection,这是一个类数组对象,那个if判断是没有用的,因为无论找到与否,都会返回一个HTMLCollection,结果都为true。
可以按照数组下标的形式取得你要的DOM对象,或者加class或id换种方式取得。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题