document,document.all,getElementById,getElementsByName,getElementsByTagName

本文对比了不同浏览器中获取页面元素的方法,包括getElementsByName、getElementsByTagName、getElementById等,并指出它们在IE6.0下的具体表现及局限性。

 

关于页面脚本元素的测试
<div id='abc'>ID=abc</div><div name='abc'>name=abc</div>
<script language='javascript'>
//var aaa=document.all.abc;
//var aaa=document.getElementById('abc');
var aaa=document.getElementsByName('abc');
if(aaa)
window.alert('网页上'+aaa.length+'个元素,如果为undefined,则为一个元素!');
else window.alert("一个元素也没有!");
</script>
我在IE6.0下测试的结果为:元素只有一个
第二个DIV也就是name=abc的DIV元素,用document.getElementsByName('abc')方法返回不了。也就是说:getElementsByName方法对div(span)的name属性无效。对于这种情况,可以用另一个方法来返回其元素(it's getElementsByTagName())

1、getElementsByName 与getElementsByTagName 相比,相同的是都返回元素对象数组
1)、getElementsByName()只是document的方法,对部分元素(div,span)的name属性无效。相关方法:document.all.元素ID
2)、getElementsByTagName() 是所有页面元素的方法,对tag有效,tag不分大小写。相关方法:document.all.tags()


2、getElementById 只是document的方法,而且只对ID有效,对name属性无效,只返回一个元素,而不是元素数组。

3、form,image,applet,可以作为document的属性直接返回,其它元素须由document.all返回

4、input是form的子元素,所以由formID.inputID来返回,IE下一个例外:document.formID.inputID 这样会报错,而要这样:document.all.formID.inputID。

转载于:https://www.cnblogs.com/zhangtao/archive/2010/11/11/2347586.html

### 使用 JavaScript 方法获取页面元素内容 以下是通过 `document.getElementById`、`document.getElementsByTagName` 和 `document.getElementsByName` 这三种方法获取页面上的班级、姓名和学号的示例代码。 #### HTML 结构 首先定义一个简单的 HTML 页面结构,其中包含用于存储班级、姓名和学号的信息: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 示例</title> </head> <body> <!-- 班级 --> <div id="class">计算机科学班</div> <!-- 姓名 --> <p name="name">张三</p> <!-- 学号 --> <span tag="studentId">2023123456789</span> <button onclick="displayInfo()">显示信息</button> <script src="script.js"></script> </body> </html> ``` #### JavaScript 实现 下面是实现逻辑的 JavaScript 文件 (`script.js`) 的代码: ```javascript function displayInfo() { // 使用 document.getElementById 获取班级信息 const className = document.getElementById('class').textContent; // 使用 document.getElementsByName 获取姓名信息 const nameElements = document.getElementsByName('name'); let studentName; if (nameElements.length > 0) { studentName = nameElements[0].textContent; } // 使用 document.getElementsByTagName 获取自定义标签属性中的学号信息 const spanTags = document.getElementsByTagName('span'); let studentId; for (let i = 0; i < spanTags.length; i++) { if (spanTags[i].getAttribute('tag') === 'studentId') { studentId = spanTags[i].textContent; break; } } // 输出到控制台或弹窗展示 alert(`班级: ${className}\n姓名: ${studentName}\n学号: ${studentId}`); } ``` --- ### 解析与说明 1. **`document.getElementById`** - 此方法通过唯一的 ID 属性值定位 DOM 元素[^2]。 - 在本例中,我们通过 `id="class"` 定位到了表示班级的 `<div>` 元素,并提取其文本内容作为班级名称。 2. **`document.getElementsByName`** - 此方法基于 `name` 属性查找一组匹配的元素集合[^2]。 - 返回的是一个类数组对象(HTMLCollection),因此需要进一步处理以获取具体的内容。在此处假设只有一个具有指定 `name` 属性的元素存在。 3. **`document.getElementsByTagName`** - 此方法按标签名检索所有符合条件的节点列表。 - 需要遍历这些节点并检查特定条件(如自定义属性 `tag="studentId"`)来找到目标项。 以上方式均能有效完成任务,但需注意实际开发场景下可能涉及更复杂的验证机制以及错误处理流程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值