封装函数:使用document.getElementsByTagName模拟document.getElementsByName
时间: 2023-08-20 14:04:05 浏览: 119
当使用 `document.getElementsByTagName` 函数模拟 `document.getElementsByName` 函数时,可以通过以下方式进行封装:
```javascript
function getElementsByName(name) {
var = [];
var allElements = document.getElementsByTagName("*");
for (var i = 0; i < allElements.length; i++) {
if (allElements[i].getAttribute("name") === name) {
elements.push(allElements[i]);
}
}
return elements;
}
```
这个封装函数会返回一个包含所有具有指定 `name` 属性的元素的数组。它首先使用 `document.getElementsByTagName("*")` 获取页面上所有的元素,然后通过遍历这些元素,判断它们的 `name` 属性是否与指定的 `name` 相匹配,如果匹配,则将其添加到结果数组中。最后返回结果数组。
相关问题
function $(param) { var domList = []; if (param.indexOf('#') == 0) { var id = param.substring(1); var dom = document.getElementById(id); domList[0] = dom; } else if (param.indexOf('.') == 0) { var name = param.substring(1); domList = document.getElementsByName(name); } else { domList = document.getElementsByTagName(param); } domList.prop = function () { if (arguments.length == 1) { var dom = domList[0]; return dom[arguments[0]]; } else if (arguments.length == 2) { for (let i = 0; i < domList.length; i++) { var dom = domList[i]; dom[arguments[0]] = arguments[1]; } } } return domList; }帮我解释一下这些代码
这段代码定义了一个名为 `$` 的函数,该函数可以根据参数返回一个或多个DOM节点(元素)。
函数接受一个参数,参数可以是标签名、类名或ID。如果参数以 `#` 开头,则返回ID匹配的DOM节点;如果参数以 `.` 开头,则返回类名匹配的DOM节点;否则,返回标签名匹配的DOM节点。
代码中定义了一个 `domList` 数组来存储匹配的DOM节点。如果参数为ID,则使用 `document.getElementById()` 方法获取DOM节点,并将其存储在 `domList` 数组的第一个元素中。如果参数为类名,则使用 `document.getElementsByName()` 方法获取DOM节点,并将其存储在 `domList` 数组中。如果参数为标签名,则使用 `document.getElementsByTagName()` 方法获取DOM节点,并将其存储在 `domList` 数组中。
此外,函数还定义了一个 `prop()` 方法来设置或获取DOM节点的属性。当 `prop()` 方法接收一个参数时,它将返回第一个DOM节点的指定属性的值。当 `prop()` 方法接收两个参数时,它将设置所有DOM节点的指定属性为指定的值。
最后,该函数返回 `domList` 数组,该数组包含匹配的DOM节点。可以链式调用该函数来对匹配的DOM节点进行操作。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <form> 请输入年份:<input type="text" name="year"> <button name="b1" onclick="cl()"> 是否是闰年 </button> </form> <script> var a=document.getElementsByTagName('year'); function cl(a){ if((a%4==0)&&((a%100!=0)||(a%400==0)) { alert(a+"是闰年"); } else{ alert(a+"不是闰年"); } </script> </body> </html>
这是一个用 HTML 和 JavaScript 编写的简单的判断闰年的程序。用户输入一个年份,点击按钮后程序会判断这个年份是否是闰年,然后弹出相应的提示框。其中,判断闰年的算法是:能被4整除但不能被100整除,或者能被400整除的年份是闰年。不过,这段代码有一个小问题,即在 JavaScript 中获取用户输入的年份应该使用 document.getElementsByName('year')[0].value,而不是 document.getElementsByTagName('year')。
阅读全文