封装函数:使用document.getElementsByTagName模拟document.getElementsByClassName
时间: 2023-08-11 14:03:59 浏览: 99
好的,下面是封装函数的代码:
```javascript
function getElementsByClassName(className) {
var elements = document.getElementsByTagName('*');
var result = [];
for (var i = 0; i < elements.length; i++) {
if (elements[i].className === className) {
result.push(elements[i]);
}
}
return result;
}
```
这个函数使用`document.getElementsByTagName`来获取页面中的所有元素,然后遍历这些元素,判断每个元素的`className`是否与指定的`className`相等,如果相等则将该元素添加到结果数组中。最后返回结果数组。这样就模拟了`document.getElementsByClassName`函数的功能。
相关问题
var topDom = document.getElementsByClassName("top")[0]; var btnsDom = topDom.getElementsByTagName("button"); var contentDom = document.getElementsByClassName("content")[0]; var lisDom = contentDom.getElementsByTagName("li");
这段代码是用 JavaScript 获取页面上的 DOM 元素,并将它们存储在相应的变量中。
首先,通过 `document.getElementsByClassName("top")[0]` 获取到 class 名称为 "top" 的元素节点,并将其存储在变量 `topDom` 中。注意,`getElementsByClassName` 返回的是一个类数组对象,通过索引 `[0]` 可以取得第一个匹配的元素节点。
接下来,通过 `topDom.getElementsByTagName("button")` 获取到 `topDom` 元素下的所有 button 元素节点,并将它们存储在变量 `btnsDom` 中。同样地,`getElementsByTagName` 返回的是一个类数组对象。
然后,通过 `document.getElementsByClassName("content")[0]` 获取到 class 名称为 "content" 的元素节点,并将其存储在变量 `contentDom` 中。
最后,通过 `contentDom.getElementsByTagName("li")` 获取到 `contentDom` 元素下的所有 li 元素节点,并将它们存储在变量 `lisDom` 中。
这段代码的作用是获取页面上特定 class 名称的元素,并将它们存储在相应的变量中,以便后续对它们进行操作或者获取信息。
window.onload = function(){ var item = document.getElementsByClassName("item"); var it = item[0].getElementsByTagName("div"); var content = document.getElementsByClassName("content"); var con = content[0].getElementsByTagName("div"); for(let i=0;i<it.length;i++){ it[i].onclick = function(){ for(let j=0;j<it.length;j++){ it[j].className = ''; con[j].style.display = "none"; } this.className = "active"; it[i].index=i; con[i].style.display = "block"; } } }
这段代码使用了原生 JavaScript,实现了一个简单的选项卡效果。当页面加载完成后,会获取所有 class 名称为 "item" 的元素,并取第一个元素的子元素 div,以及所有 class 名称为 "content" 的元素,并取第一个元素的子元素 div。然后对每个选项卡进行监听,当点击一个选项卡时,会将所有选项卡的类名清空并将对应的内容隐藏,再将当前选项卡添加类名 "active" 并显示对应的内容。其中,通过 let 关键字定义的变量 i 和 j 只在 for 循环内部有效,避免了变量污染全局。
阅读全文