1. 关于getElementsByName()方法与getElementById()方法的区别
这里主要是针对IE而言,需要明白的是一般来说,getElementsByName()只对于INPUT或者SELECT控件的name属性有效,而DIV....这些都是没有效果的。比如:
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.5和NN6以上的浏览器支持Frame,Iframe对象的 allowTransparency 方法,如果某对象的背景颜色设置为Transparency的,它将继承包含它容器的特性。
3.HTML控件获取焦点的问题
这里要注意一个顺序的问题,比如按照下面编写:
IE就会提示你:意外调用了方法或属性访问
但是改成下面的顺序就没有错误提示了,估计是因为DOM要在节点插入以后才能进行方法的操作,之前都是属性设置吧,不知道我这样理解对不对!
这里主要是针对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>
<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.5和NN6以上的浏览器支持Frame,Iframe对象的 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 以上版本允许你设置透明属性,通过设置是否可被透明,你可以改变背景的颜色。[在不设置透明属性的情况下,默认背景颜色为白色] <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>
3.HTML控件获取焦点的问题
这里要注意一个顺序的问题,比如按照下面编写:
tgt = document.createElement("input");
tgt.type = "text";
tgt.width = 100;
tgt.focus();
obj.appendChild(tgt);
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();
tgt.type = "text";
tgt.width = 100;
obj.appendChild(tgt);
tgt.focus();