`
linuxstuding
  • 浏览: 1259397 次
文章分类
社区版块
存档分类
最新评论

Javascript访问html页面的控件的方法详细分析

 
阅读更多

访问控件的主要对象是:document对象。分别对应当前文档所有的(子对象)个人观点。并且已经提供的几个主要方法来访问对象。
1. document.getElementById
2. document.getElementsByName
3 document.getElementsByTagName
4 document.all
下面我主要谈谈以上几个方法的具体用法:
一.首先我来谈谈document.getElementById的用法。
Var obj=document.getElementById(“ID”) 根据指定的ID属性值得到对象。返回id属性值等于ID的第一个对象的引用。假如对应的为一组对象,则返回该组对象中的第一个。
<input name=”a” type=”text” id=”b”/>
<input name=”b” type=”text” id=”a”/>
<input type=”button” name=”submint1” value=”text1” onclick=:”alert(document.getElementById(“b”)/>)”<input type=”button” name=”submint2” value=”text2” onclick=”alert(document.getElementById(“a”)/>)”我在IE中测试了上面代码,在第一个文本框中输入1,在第二个文本中输入2,然后点击两个按钮,大吃一斤。结果两个按钮都返回了第一个文本框的值。这说明了IE执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是根据ID来查找的。
但相反我在firefox中就不存在这个问题。Firefox执行document.getElementById(elementName)的时候只能查找ID等于elementName对象,如果不存在在返回null.
二.下面看看document.getElementsByName的用法。
Var obj=document.getElementsByName(“Name”)根据Name属性的值获取对象集合。返回name等于指定Name对象的集合。注意这里返回的是一个集合,包括只有一个元素的情况也是一个集合。
document.getElementsByName("name")[0?1?2?3?....] 这样来获取某一个元素。注意javascript中的集合取一个值可以用[],也可以用(),(本人测试通过,但没有资料这么写)。
如:
<script>
function prop()
{
var objs=document.getElementsByName("a");
alert(objs(0).value);//或者可以alert(objs[0].value)也正确的。
}
</script>
<input type="text" name="a" id="b" value="this is textbox"/>
<input type="button" value="testing" onclick="prop()"/>
三.Document.getElementsByTagName的用法:
Var ojbs=document.getElementsByTagName(“Tag”)根据基于指定元素名称对象的集合。返回Tag属性等于指定Tag标记的集合。这里也返回的是一个集合。(同上)
四.document.all用法。
document.all是页面内所有元素的一个集合。例如:
document.all(0)表示页面的第一个元素。
Document.all(“txt”)表示页面上id或name等于txt的所有对象的单个元素和集合元素。
如果页面上的id或name等于txt只有一个元素(包括name和id情况),那么document.all()的结果就只是一个元素,反之就是获取一个集合。(综合了document.getElementById和document.getElementsByName的各自的特点)。
也可以这样写:document.all.txt也是一样。
例如:
<input name=aaa value=aaa>
<input id=bbb value=bbb>
<script language=Jscript>
alert(document.all.aaa.value) //根据name取value
alert(document.all.bbb.value) //根据id取value
</script>
代码2:
但是常常name可以相同(如:用checkbox取用户的多项爱好的情况)
<input name=aaa value=a1>
<input name=aaa value=a2>
<input id=bbb value=bbb>
<script language=Jscript>
alert(document.all.aaa(0).value)//显示a1
alert(document.all.aaa(1).value)//显示a2
alert(document.all.bbb(0).value)//这行代码会失败
</script>
理论上一个页面中的ID是互不相同的,如果出现不同的tags而有相同的id的话,document.all.id就会失败,就象这样:<input id=aaa value=a1>
<input id=aaa value=a2>
<script language=Jscript>
alert(document.all.aaa.value)//显示undefined而不是a1或者a2
</script>
所以说遇到了这种情况的话用下面这种写法:
<input id=aaa value=aaa1>
<input id=aaa value=aaa2>
<input name=bbb value=bbb>
<input name=bbb value=bbb2>
<input id=ccc value=ccc>
<input name=ddd value=ddd>
<script language=Jscript>
alert(document.all("aaa",0).value)
alert(document.all("aaa",1).value)
alert(document.all("bbb",0).value)
alert(document.all("bbb",1).value)
alert(document.all("ccc",0).value)
alert(document.all("ddd",0).value)
</script>
另外document.all可以判断浏览器的种类是否是IE,
document.all---------针对IE
document.layers------------针对Netscape
这两个集合.all只在ie里面有效,layers只在nc里面有效
所以就可以通过这个方式来判断不同的浏览器。

最后我来说说getElementById和getElementsByName使用范围:
Id就像身份证号,是唯一的,name就像姓名一样可以同名。
一个元素定义了id,引用该元素时直接用id属性,而name通常用在form中,且必须由document.form.***而来,也就是说,name 属性定义的元素在脚本中是document 对象的子对象。
1. name用于form内元素,提交需要.
id用于form外元素好用因为 DOM 能直接取得单一元素
2.id 每页只能有一个
name 可以有多个 name 有些标签不推荐用它
3. 表单元素(form input textarea select)与框架元素(iframe frame) 用 name这些元素都与表单 (框架元素作用于form的target)提交有关, 在表单的接收页面只接收有name的元素 , 赋ID 的元素通过表单是接收不到值的, 你自己可以验证一下有一个例外A 可以赋 name 作为锚点, 也可以赋 ID;只能赋ID不能赋name的元素:(除去与表单相关的元素都只能赋 ID) body li table tr td th p div span pre dl dt dd font b 等等。
这里我引出另一个问题,既然有了ID那为什么还要name呢?
最直接答案:ID就像是一个人身份证号,而 name就像是他的名字,ID虽然是唯一的,但name是可以重复的。
具体来说:对于ID来说,它就是Client端HTML元素的Identity 。而Name 其实要复杂的多,因为 Name 有很多种的用途,所以它并不能完全由ID来代替,从而将其取消掉。
参考网站资料如下:具体用途有:
  用途 1: 作为可与服务器交互数据的 HTML 元素的服务器端的标示,比如 input 、 select 、 textarea 、和 button 等。我们可以在服务器端根据其 Name 通过 Request.Params 取得元素提交的值。   用途 2: HTML 元素 Input type= "radio " 分组,我们知道 radio button 控件在同一个分组类, check 操作是 mutex 的,同一时间只能选中一个 radio ,这个分组就是根据相同的 Name 属性来实现的。
用途 3: 建立页面中的锚点,我们知道 <a href="URL" >link </a > 是获得一个页面超级链接,如果不用 href 属性,而改用 Name ,如: <a name="PageBottom" > </a > ,我们就获得了一个页面锚点。
用途 4: 作为对象的 Identity ,如 Applet 、 Object 、 Embed 等元素。比如在 Applet 对象实例中,我们将使用其 Name 来引用该对象。
  用途 5: 在 IMG 元素和 MAP 元素之间关联的时候,如果要定义 IMG 的热点区域,需要使用其属性 usemap ,使 usemap="#name"( 被关联的 MAP 元素的 Name)
  用途 6: 某些特定元素的属性,如 attribute ,和 param 。例如为 Object 定义参数 <PARAM NAME = "appletParameter" VALUE = "value" > .
  显然这些用途都不是能简单的使用 ID来代替掉的,所以HTML元素的ID和 Name的却别并不是身份证号码和姓名这样的区别,它们更本就是不同作用的东西。 当然HTML元素的Name属性在页面中也可以起那么一点ID的作用,因为在 DHTML对象树中,我们可以使用 document.getElementsByName 来获取一个包含页面中所有指定Name元素的对象数组。
  在这里顺便说一下,要是页面中有n(n >1) 个 HTML 元素的 ID 都相同了怎么办?在 DHTML 对象中怎么引用他们呢?如果我们使用 ASPX 页面,这样的情况是不容易发生的,因为 aspnet进程在处理aspx 页面时根本就不允许有 ID 非唯一,这是页面会被抛出异常而不能被正常的render。要是不是动态页面,我们硬要让 ID 重复那 IE 怎么搞呢?
这个时候我们还是可以继续使用 document.getElementById 获取对象,只不过我们只能获取ID重复的那些对象中在HTML Render时第一个出现的对象。而这时重复的 ID会在引用时自动变成一个数组,ID重复的元素按 Render的顺序依次存在于数组中。
getElementById("xxx")返回第一个id属性为"xxx"或者特定表单元素name为"xxx"的元素
getElementsByName("xxx")返回所有id属性为"xxx"或者特定表单元素name为"xxx"的元素
这里要说明一下其实getElementById和getElementsByName取元素的范围是一样的,区别只是前者只返回第一个元素后者返回所有元素的集合
另外说明一下表单元素 表单元素指的是在<FORM >标签中数据可以被提交给服务器的标签
主要有 <INPUT > <SELECT > <TEXTAREA >三个标签 这三个标签只有在name属性不为空的时候才能将数据提交给服务器 所以这三种标签多定义了一个name属性 其实这个name属性和id属性是完全一样的都可以定位元素
如果不是表单元素 就算你加了name属性getElementsByName也取不到不信你自己试试.
由于本人能力有限,希望朋友们能够及时的指出不正确的地方并及时留言我好修正,本人万分感谢!

分享到:
评论

相关推荐

    javascript控件

    JavaScript是一种轻量级的脚本语言,常被嵌入HTML页面中,以实现动态内容的生成和用户交互。在这个主题中,我们将深入探讨JavaScript控件的各种类型、使用方法以及它们在实际应用中的重要性。 首先,JavaScript控件...

    Javascript访问html页面的控件的方法详细分析第1/2页

    下面切入正题: 访问控件的主要对象是:document对象。分别对应当前文档所有的(子对象)个人观点。并且已经提供的几个主要方法来访问对象。 1. document.getElementById 2. document.getElementsByName 3 ...

    JavaScript日历控件 六种日历

    JavaScript日历控件是网页开发中常用的一种交互元素,它能帮助用户方便地选择日期,常见于表单输入、事件安排或时间相关的功能。在给定的资源中,包含了六种不同样式的JavaScript日历,这些日历可能具有不同的设计...

    javascript 日期时间控件

    总之,JavaScript日期时间控件是一个复杂但实用的Web组件,它利用JavaScript的日期功能结合用户交互设计,为用户提供了一种在网页中选择日期和时间的便捷方式。通过分析"datescript.js",我们可以深入理解其背后的...

    JavaScript日期时间选择控件

    JavaScript日期时间选择控件是一种常见的前端开发工具,用于在网页上提供用户友好的日期和时间输入界面。在网页设计中,这种控件可以极大提升用户体验,因为它允许用户通过直观的日历视图和时间选择器来设定日期和...

    两款JavaScript日历控件 网页日历控件

    JavaScript日历控件是网页开发中常用的一种组件,主要用于用户在网页上选择日期,常见于表单填写、事件安排或时间记录等场景。本篇文章将详细介绍两款常用的JavaScript日历控件,以及如何根据需求进行配置,包括更改...

    javascript的网页日历控件

    JavaScript的网页日历控件是Web开发中常见的一种交互元素,它允许用户通过图形界面方便地选择日期,常用于表单填写、事件预订或者在线时间安排等场景。这些控件通常具有多种样式和定制选项,以适应不同网站的设计...

    javascript树形结构控件

    JavaScript树形结构控件是一种常见的前端开发元素,用于在网页上呈现层次化的数据,比如文件系统、组织架构或导航菜单等。它通过节点的展开、折叠来模拟树状的层级关系,用户可以通过交互来探索和操作这些数据。下面...

    js(javascript) 日期控件

    JavaScript(通常简称为JS)是一种轻量级的解释型编程语言,主要用于网页和网络应用的开发。在网页中,JS可以极大地增强用户交互性,其中日期控件是常见的一种功能,用于帮助用户方便地选择日期,常用于日历插件、...

    MFC的WebBrowser控件 C++与JavaScript之间数据交互传递

    `IDispatch`接口允许我们调用对象的属性和方法,而`IHtmlDocument2`接口提供了对HTML文档的访问,使我们能够获取或设置页面元素的属性。 1. **C++向JavaScript传递数据**: 在C++端,我们可以使用`...

    JavaScript 页面日历控件

    JavaScript 页面日历控件是一种常见的前端交互元素,用于在网页上显示日期选择功能,常见于事件安排、在线预订或表单填写等场景。这个控件是开发者在项目实践中提炼出来的一种简洁、美观且实用的解决方案。 日历...

    JavaScript手册和日历控件

    这份"JavaScript手册和日历控件"压缩包显然旨在为初学者提供一个全面的学习资源,帮助他们从基础到进阶掌握JavaScript,并了解如何实现日历控件。 首先,我们来看"JavaScript参考手册中文版.chm"。这是一本详细阐述...

    html网页访问串口的ocx源码和js的调用方法,ocx中自定义事件

    - `comHelper.html`: HTML页面示例,展示了如何在网页中使用此控件。 - `ComHelperXControl.lic`: 控件的许可文件,确保合法使用。 总结来说,这个压缩包提供了一套完整的解决方案,让用户可以通过HTML网页使用...

    JavaScript编写的日期控件

    本资源集合了一些被认为优秀的JavaScript日期控件,下面将详细介绍JavaScript日期控件的相关知识点。 1. **基本概念**: - **DOM(Document Object Model)**:JavaScript操作网页元素的基础,日期控件通常需要与...

    用Javascript写的日期控件

    在本场景中,我们讨论的是一个用JavaScript编写的日期控件,这是一款用于网页中的交互式组件,允许用户方便地选择日期。日期控件在网页表单中非常常见,比如用于填写生日、预约日期或设定截止日期等。 日期控件的...

    javascript Calendar控件下载

    JavaScript Calendar控件是一种在网页上实现日历功能的客户端控件,它允许用户通过点击一个按钮或者图标,弹出一个日期选择器,方便地选择日期。这种控件通常用于在线表单,帮助用户输入日期信息,提高用户体验。...

    web服务器控件与html服务器控件的区别及用法

    在ASP.NET开发过程中,开发者经常需要在项目中使用各种控件来构建动态网页。在这些控件中,有两种常见的类型:Web服务器控件(WebControls)与HTML服务器控件(HtmlControls)。虽然这两种控件在表面上看起来非常...

    JavaScript开发的日期控件

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它在客户端运行,为用户提供动态交互体验。在网页中,日期控件是常见的交互元素,用于选择或显示日期,常用于表单填写、事件安排等场景。这篇内容我们将...

    JavaScript 树型控件源码

    JavaScript树型控件是一种在网页上展示层次结构数据的交互组件,它通常用于文件系统、组织结构图或者导航菜单等场景。在这个“JavaScript 树型控件源码”中,我们可以期待找到一个实现这种功能的代码库。接下来,...

Global site tag (gtag.js) - Google Analytics