鍍金池/ 問答/HTML/ javascript中無法設置 position js dom編程藝術第十章練

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>

你期待的結果是什么?實際看到的錯誤信息又是什么?

問題描述

發(fā)生報錯 [Web瀏覽器] "Uncaught TypeError: Cannot set property 'position' of undefined" /HelloHBuilder/new_file.html (22)
我想知道是哪里寫錯了 。

回答
編輯回答
忘了我

getElementsByTagName返回的是一個數組,你那個return false也是沒用的。

var elem = document.getElementsByTagName("p")[0]
2017年10月3日 09:20
編輯回答
空痕

在console輸入
document.getElementsByTagName('p')然后回車,可以看到是一個HTMLCollection,這是一個類數組對象,那個if判斷是沒有用的,因為無論找到與否,都會返回一個HTMLCollection,結果都為true。
可以按照數組下標的形式取得你要的DOM對象,或者加class或id換種方式取得。

2018年2月18日 18:59