document.getElementById的一些细节

① document.getElementById 有时会抓name放过了id ,据说是IE的一个BUG;
http://community.csdn.net/Expert/topic/4223/4223888.xml?temp=.1947443

页面中有

程序代码
<input type="hidden" id="hello8" name="category_id" value="2" />
<select id="category_id" onchange="al();">

一个是name="category_id" 一个是id="category_id" 
用document.getElementById取第二个,可是,取到的却是第一个name=category_id
在IE中getElementById竟然不是先抓id而是先找name相同的物件...

兩個form,每個form有兩個textbox,兩個form中的textbox是相同的name,但id都不同...
這樣在Firefox是沒問題的...但在IE卻只抓得到第一個出現的name資料

下面这段代码可以验证这个结果

getElementById

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

② javascript中的getElementbyId使用 
网页中的元素必须有id属性,才能通过这个方法得到,比如
<input type=text name="content" id="content">

③获取html标记主要有两种方法,一种是通过ID值,一种是通过name属性 
name属性主要用于form表单内的input标记

(0)

相关推荐

  • 由document.body和document.documentElement想到的

    对于document.compatMode,很多朋友可能都根我一样很少接触,知道他的存在却不清楚他的用途.其实这个对于我们开发兼容性的web页面还是很有帮助,我们都知道,盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在不声明Doctype的情况下,浏览器默认是Quirks Mode.所以为兼容性考虑,我们可能需要获取当前的文档渲染方式. document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其

  • document.all还是document.getElementsByName?

    复制代码 代码如下: (wuhen注:document.all是ie特有的属性,不是万维网标准) 当页面上的控件同名且多个的时候,你首先做的是什么?判断长度?的确,从程序的严密角度出发,我们是需要判断长度,而且有长度和没长度是两种引用方法.我们来看: oEle= document.all.aaa ;//这里有一个aaa的对象,但我们不知道它现在长度是多少,所以没办法对它操作.因此,我们要先做判断长度的过程.如下: if(oEle.length){}else{}; 在两种情况下,花括号里面的内容写

  • document.createElement()用法

    document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用.其中,appendChild() 方法在节点的子节点列表末添加新的子节点.insertBefore() 方法在节点的子节点列表任意位置插入新的节点. 下面,举例说明document.createElement()的用法.<div id="board"></div>例1: 复制代码 代码如下: <script

  • document.getElementById介绍

    把你的大脑当做浏览器执行下面的代码两次,分别是IE6和IE9: 复制代码 代码如下: function testFunc(){ alert('test') } $(function(){ var g = document.getElementById , w = window.testFunc ; //g alert(typeof(g)); alert(String(g)); alert(g instanceof Object); alert(g instanceof Function); //

  • 用document.documentElement取代document.body的原因分析

    IE6在页面内容超出窗口大小时将宽度属性scrollWidth.clientWidth.offsetWidth都解释为内容实际宽度. 上次的测试说明了document.body属性并不会给我们返回预期的结果,比如我们用document.body.clientHeight原本想取得"页面可见区域高度",可实际上返回的是"页面实际内容高度". 那我们怎么办呢?难道加上了文档DTD类型之后就再也不能取到"可见区域高度"和"内容实际宽度&quo

  • document.createElement()用法及注意事项(ff下不兼容)

    今天处理了一个日期选择器的ie和ff的兼容问题,本来这种情况就很难找错误,找了好久才把错误定位到js中创建元素的方法document.createElement(),这个方法在ie下支持这样创建元素 复制代码 代码如下: var inputObj    = document.createElement      ("<input type='text' size='8' style='border:0px;border-bottom:2px solid #c0c0c0;' " r

  • document.documentElement的一些使用技巧

    复制代码 代码如下: --documentElement 属性可返回文档的根节点. <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function shownode() { var ohtml = document.documentElement; //al

  • document.getElementById的一些细节

    ① document.getElementById 有时会抓name放过了id ,据说是IE的一个BUG: http://community.csdn.net/Expert/topic/4223/4223888.xml?temp=.1947443 页面中有 程序代码 <input type="hidden" id="hello8" name="category_id" value="2" /> <select

  • TypeError document.getElementById(...) is null错误原因

    今天手写了一个简单的页面做测试用,写完js部分总是报 TypeError document.getElementById(...) is null 这个错误,代码看了几遍,语法上没找着什么错误,没办法,就在互联网上搜索了一下,才发现 document.getElementById 这个根据id找节点的语法写法还是有点讲究的,具体如下: (1)如果写在 id 所在节点的前面,比如 head 块中,则要如下写法: 复制代码 代码如下: window.onload=function(){  .....

  • javascript typeof id==='string'?document.getElementById(id):id解释 原创

    一般来说想要理解这段代码,需要掌握如下两个函数 一个是 typeof一个就是三元运算符 看完了上面的文章再看下面的就比较好理解了 一般来说常用的函数代码 function $(id){ return typeof id==='string'?document.getElementById(id):id;} var GetBy = function (id) { return "string" == typeof id ? document.getElementById(id) : id

  • document.getElementById获取控件对象为空的解决方法

    1.下面是一个简单的例子,页面加载时显示一段信息 复制代码 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>      <

  • javascript代码在ie8里报错 document.getElementById(...) 为空或不是对象的解决方法 原创

    ie8中对于声明文档类型更加严格如下面的代码. 运行环境: function osdo(str){ document.getElementById("os").value=str; } 清空 Windows平台 S60v2 S60v3 CHM PDF PPT WORD EXCEL asp asp+access asp+sqlserver asp+sql/access php源码 php php+mysqljsp asp.net源码 asp.net asp.net+access asp.

  • 原生js操作checkbox用document.getElementById实现

    jquery与checkbox的checked属性的问题,讲的是控件<input type="checkbox"></input> 1.页面加载成功后,点击选中或取消选中该checkbox,checkbox属性里的checked属性不会根据该checkbox是否选中而变化 2.checkbox里的onchange或onclick方法里用jquery的attr方法获取checked是看得到的checked属性的值与它是否给钩上没有关系 3.使用document.g

  • js中document.getElementByid、document.all和document.layers区分介绍

    document.all是IE 4.0及以上版本的专有属性,是一个表示当前文档的所有对象的娄组,不仅包括页面上可见的实体对象,还包括一些不可见的对象,比如html注释等等.在document.all数组里面,元素不分层次,是按照其在文档中出现的先后顺序,平行地罗列的.所以可以用数字索引来引用到任何一个元素.但比较常用的是用对象id来引用一个特定的对象,比如document.all["element"]这样. document.layers是Netscape 4.x专有的属性,是一个代表

  • document.getElementsByName和document.getElementById 在IE与FF中不同实现

    对于ID & Name 按最经典的解释的:"ID 就如同我们的身份证,Name就如同我们的名字",也就是说,在一个html文档中ID是唯一的,但是Name是可以重复的,就象我们的人名可以重复但是身份证确实全中国唯一的(PS:据说有重复的^_^) 但是对于document.getElementsByName 与document.getElementById 这个两个方法,IE中是并没有严格区分 ID 与 Name 的,比如: <script type="text/

  • 各浏览器对document.getElementById等方法的实现差异解析

    所有Web前端同仁对 document.getElementById 都非常熟悉了.开发过程中经常需要用其获取页面id为xx的元素,自从元老级JS库Prototype流行后,都喜欢这么简写它 复制代码 代码如下: // 方式1 function $(id){ return document.getElementById(id); } 有没有人想过为什么要这么写,而不用下面的方式写呢? 复制代码 代码如下: // 方式2 var $ = document.getElementById; 这么写的$

随机推荐