上善若水
愿倾其毕生之功,高扬.NET旗帜
1. 关于getElementsByName()方法与getElementById()方法的区别
这里主要是针对IE而言,需要明白的是一般来说,getElementsByName()只对于INPUT或者SELECT控件的name属性有效,而DIV....这些都是没有效果的。比如:
<input   type=button   value=getTagName   onclick="getTagName()">   
  
<div   name="up">123</div>   
  
<div   name="up">456</div>   
  
<div   name="up">789</div>   
  
<input   name="up">   
  
<input   name="up">   
  
<script   language="javascript">   
        function   getTagName()   
        
{   
                  var   names
=document.getElementsByName("up");   
                  alert(names.length)   
        }
   
  
</script>  

getTagName()的结果是2,而不是5。这是因为div没有名字属性。你写的name=up属于expando   属性,不能包括进去,所以是2啦。但是一般说来,在IE中,getElementsByName()对于对象的ID也是有效的。如果把上面的name属性改为id,就能得到5

还有一个需要注意的是,在通过DOM创建SELECT/CHECKBOX等INPUT对象时,是不能通过OBJ.SetAttribute("name",..)或者obj.name=...来有效生成name属性,通过他们生成的节点,如果用getElementsByName()获取具有相同name属性的节点,是不能成功的。这时候需要变通一下,在创建节点的时候,可以通过var obj = documeng.createElement("<input name=''>")来生成,再通过type属性指定类型,这样就能成功能够获取具有相同name属性的节点

2.IFRAME的背景开关设置
 ,但是无论怎么设置IFRAME或者TD的背景色都没有效果
解决办法:IE5.5NN6以上的浏览器支持FrameIframe对象的 allowTransparency 方法,如果某对象的背景颜色设置为Transparency的,它将继承包含它容器的特性。
//IFRAME定义如下: 
<IFRAME ID="frame1" SRC="a.html" allowTransparency="true" HEIGHT=180 WIDTH=300> </IFRAME> <IFRAME ID="frame2" SRC="b.html" allowTransparency="true" STYLE="background-color:#459800" HEIGHT=180 WIDTH=300> </IFRAME>

//a.html如下: 
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
</HEAD>
<BODY style="BACKGROUND-COLOR: transparent">
<H1>透明文档</H1>
<P>此IFRAME无背景颜色</P>
<P>BODY:<br><BODY STYLE="background-color:transparent"></P></BODY></HTML> 

//b.html如下: 
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
</HEAD>
<BODY style="BACKGROUND-COLOR: transparent">
<H1>透明文档</H1>
<P>此IFRAME 设为黄色。</P>
<P>BODY: <br><BODY STYLE="background-color:transparent"></P></BODY></HTML>
如果a.html透明的,它将继承IFRAME的背景颜色 如果容器IFRAME也是透明的,a.html将继承Iframe的父容器的颜色,如果一个对象不透明,它将覆盖其容器的颜色,默认是透明的。 Internet Explorer 5.5 以上版本允许你设置透明属性,通过设置是否可被透明,你可以改变背景的颜色。[在不设置透明属性的情况下,默认背景颜色为白色]

3.HTML控件获取焦点的问题
这里要注意一个顺序的问题,比如按照下面编写:
tgt = document.createElement("input");
tgt.type 
= "text";
tgt.width 
= 100;
tgt.focus();
obj.appendChild(tgt);

IE就会提示你:意外调用了方法或属性访问
但是改成下面的顺序就没有错误提示了,估计是因为DOM要在节点插入以后才能进行方法的操作,之前都是属性设置吧,不知道我这样理解对不对!
tgt = document.createElement("input");
tgt.type 
= "text";
tgt.width 
= 100;
obj.appendChild(tgt);
tgt.focus();
posted on 2007-08-29 09:08  小兔快跑  阅读(2542)  评论(0编辑  收藏  举报