1

行。突然,我的脑海里出现了这个疑问。

jQuery这样的库使得查找具有一些class. 它不会强迫我们对id要找到的元素应用 an 。getElementById()在 Vanilla js 中,我们可以选择使用强制我在很大程度上应用 ID的方法来查找元素。

我查看了这个解决方案来查找使用属性的元素,在这种情况下将是class. 经过解决方案后,我发现它在浏览器上非常繁重。如果我有一个复杂的 DOM 结构,它会成本性能。我的问题还是一样。

如何在 Vanilla Javascript 中使用class name和不使用来查找元素?id

4

2 回答 2

5

怎么样

var elems = document.getElementsByClassName('someclass');

这将返回一组具有给定类的元素。然后您可以使用 访问它们elems[0]elems[1]依此类推..

请记住,jQuery 最终是基于 JavaScript 的,因此从执行的角度来看,它不可能更快。

你可能会在这里找到一些有趣的 jQuery 到 JavaScript 的翻译

http://vanilla-js.com/

对于旧版本的 IE,您需要使用getElementsByTagName并循环返回的元素。此实用程序功能应该从 IE6 开始兼容(可能类似于您链接到的解决方案)

function getElementsByAttributeValue(atrName,atrValue) {
    var matchElems = [];

    var allElems = document.getElementsByTagName('*');
    for(var x = 0, len = allElems.length; x < len; x++) {
        if(allElems[x].getAttribute(atrName) != atrValue) {
            continue;
        }

        matchElems.push(allElems[x]);
    }

    return matchElems;
}

用法是:

var elems = getElementsByAttributeValue("class","someclass");
于 2013-01-13T08:37:53.543 回答
0

document.getElementByClassName('testclass');将为您提供带有 testclass 的元素,您也可以使用document.getElementsByTagName('img');它将为您提供 img 元素。

于 2013-01-13T09:59:22.963 回答