createElement创建控件时的name属性设置问题

原创 2007年09月14日 23:06:00

最近在回答一个网友的问题时发现了一个奇怪的问题:
在IE下,
var obj=document.createElement("<div>");
obj.name="divName";
document.body.appendChild(obj);
//alert(obj.outerHTML);//<div name=divName></div>
这样在页面上就创建了一个div对象,name为divName
此后,
var myAdd=document.getElementsByName("divName");
myAdd:name属性为divName的控件数组
但是拿到的却是空值,即myAdd.length为0
难道没有添加成功?
再试:
var myAdd=document.getElementsByTagName("div");
//alert(myAdd.length);//1
//alert(myAdd[0].name);//divName
事实上这个控件是添加成功的
这另我很是不解,难道又是IE的BUG

于是我查了下资料,很遗憾,没找到什么根据
在网上某网友的博客中看到document.createElement("<input name=inputName>")可以设置name属性
var obj=document.createElement("<input name=inputName>");
document.body.appendChild(obj);
var myAdd=document.getElementsByName("inputName");
//alert(myAdd.length);//1
//alert(myAdd[0].name);//inputName
哦~~~耶,成功得到
再试:
var obj=document.createElement("<div name=divName>");
document.body.appendChild(obj);
var myAdd=document.getElementsByName("divName");
//alert(myAdd.length);//0
哎......奇怪,怎么回事呢
困惑了......
出于好奇,我有种试遍所有控件的冲动,不过还好,没用得着试遍所有的控件,差不多找到规律了。
在IE里面,html元素如果可以作为容器,那么在document.createElement创建元素时是无法设置name属性的,比如:div,span,font等等。
相反不可以做为容器的,在用document.createElement创建元素时可以设置控件的name属性,比如:input,button,a,img等等。 

修改服务器控件的ID和Name

   产生的ID和Name可以通过几个方法重载可以去除1.使用HTML,这种方法很好,符合原来html的标签,如htmlLink,则不需要name属性,表单提交需要name属性第一部重写Contr...
  • clingingboy
  • clingingboy
  • 2007-12-29 12:07:00
  • 324

利用File Input控件修改name属性

接着:【FE】File Input多次添加文件,动态删除文件,用来实现上传等操作 一文1.想方设法我们首先查阅资料后发现 fileList的name属性是只读的MDN 修改只读属性: Ob...
  • future_todo
  • future_todo
  • 2016-09-27 19:22:49
  • 1000

使用createElement()创建checkbox不能设置name属性

               今天在使用document.createElement()动态创建复选框时,发现不能为其name赋值,以下是测试代码: html>  head>    title>Tes...
  • mydeman
  • mydeman
  • 2008-08-01 17:23:00
  • 3183

在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法

    这是一个很讨厌的情况,讨厌到我都不知道是因为什么原因,刚才还好好的自定义控件,在使着使着会出现这么一个问题,如下图所示。    一开始,一直以为是我的错,结果,后来发现是微软的错。最后的解决方...
  • smallfools
  • smallfools
  • 2010-06-09 17:38:00
  • 4898

C#根据控件名获取控件对象

需求:在一个项目中,要实现一个控件选择功能,如果一个个的去判断,代码会十分难看,由于控件名有规律,是否可以根据控件直接找到对应的控件对象? 实现:利用反射 object o = this....
  • CLeopard
  • CLeopard
  • 2014-11-07 11:05:57
  • 20804

控件Name和id的区别

下午在用select的时候,突然发现一个很怪的问题,无论name和id如何指定,调用的时候都可以混用,在name和id不同的情况下,使用getElementById和getElementsByName...
  • anbs01
  • anbs01
  • 2009-11-12 14:24:00
  • 1574

【随笔记录】document.createElement创建添加属性

动态添加div中,需要进行添加id,class,style等属性 做下记录 var div = document.createElement('div'); div.id = 'mask_...
  • wenxuechaozhe
  • wenxuechaozhe
  • 2016-07-15 21:41:31
  • 6046

IE11也不再支持document.createElement("<input type='file' name='upload'/>");

以前IE浏览器会支持这样的js代码  document.createElement("");,但现在我们必须这样写:...
  • LNF568611
  • LNF568611
  • 2014-08-11 23:45:12
  • 1824

支持任意<em>改名字</em>的EMRPAD30<em>控件</em>

举报人: 被举报人: qq_28987189 举报的资源分: 9 *类型: *详细原因: 取  消 提  交 支持任意<em>改名字</em>的EMRPAD30<em>控件</em> 3 积分 立即下载 ...
  • 2018年03月23日 00:00

ocx修改ID和名字

需要注意几个地方: 1、涉及到uuid()。 2、.idl文件的修改。 3、调用地方.rc文件的uuid修改。 4、GetClsid的修改。...
  • qq_23494915
  • qq_23494915
  • 2017-12-06 17:04:39
  • 107
收藏助手
不良信息举报
您举报文章:createElement创建控件时的name属性设置问题
举报原因:
原因补充:

(最多只允许输入30个字)