[英]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!
謝謝
您正在嘗試通過其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.