簡體   English   中英

document.getElementById無法正常工作?

[英]document.getElementById not working?

有人可以解釋為什么這行不通嗎?

var element = document.getElementById('element'); // Works OK
var slide = element.getElementById('slide'); // Throws an error

因此,想法是只獲取一次DOM,而我在該變量中擁有所有標簽,然后可以對其進行操作並從該變量中獲取其余信息。

如何從element變量中獲取其他元素? 使用document.getElementById('id');是否不好document.getElementById('id'); 每次我需要DOM中的東西嗎? 它會減慢網頁速度嗎?

我該如何解決這個問題?

請不要jQuery,請使用純Javascript!

謝謝

元素沒有getElementById方法, document沒有,

所以用

document.getElementById('slide');

您正在嘗試通過其ID獲取元素。 因此它是嵌套在元素內還是父元素都沒有關系! 因為DOM中最多只能有一個元素具有相同的ID。

與獲取您必須使用的第一個元素相同:

document.getElementById('slide');

代替:

element.getElementById('slide');

因為element變量沒有方法getElementById。 您可以從文檔對象中獲得該信息。

document.getElementById('element'); 將從您的DOM中獲取具有特定ID的控件。 因此,要獲得ID slide控制權,您還必須使用document對象

document.getElementById('slide');
Element.prototype.getElementById = function(req) {
    var elem = this, children = elem.childNodes, i, len, id;

    for (i = 0, len = children.length; i < len; i++) {
        elem = children[i];

        //we only want real elements
        if (elem.nodeType !== 1 )
            continue;

        id = elem.id || elem.getAttribute('id');

        if (id === req) {
            return elem;
        }
        //recursion ftw
        //find the correct element (or nothing) within the child node
        id = elem.getElementById(req);

        if (id)
            return id;
    }
    //no match found, return null
    return null;
}

所以你可以使用這段代碼

var element = document.getElementById('element'); // Works OK
var slide = element.getElementById('slide'); // Will work

從另一個問題的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM