强档推荐:web开发过程中要注意的问题
1,document.getElementById方法只能获取到一个对象,即使有多个同名的对象,也只取第一个具有该名称的对象,例如在一个form(名称为myform)中,有三个id="mycheckbox"的复选框,那么使用document.getElementById("mycheckbox"),返回的是第一个checkbox对象,而不是返回一个数组,如果使用document.myform.mycheckbox则返回一个数组。
2,使用showModalDialog打开一个页面,则在这个页面中,对于任何链接和任何表单提交,都会在新的窗口中执行,即使你在链接或form中指定了target="_self"也是没有用的。例如使用showModalDialog打开一个test.html,在该页面有一段代码
<a href="test2.html" target="_seft">打开</a>
如果点击该链接,那么将会在新窗口中打开test2.html,至少在ie中是这样的,那么是不是就没有办法解决了呢?不是的,我们可以通过在弹出的页面的head中加入下面的代码来解决这个问题:
<head>
<base target="_self">
</head>
3,在一个页面含有某个iframe,其id="myframe" name="myframe",此时使用document.getElementById("myframe")取到的是iframe标签对象,通过该对象可以获取iframe的各个属性,例如src、frameborder、style等等,但是不能获取到iframe所包含的子页面的各个对象。如果使用document.frames("myframe")取到的是iframe组件对象,通过该对象可以获取到iframe所包含的页面的子页面的各个对象,例如子页面的window对象,但是不能获得iframe标签得各个属性,例如上面说到的src等等。请参看如下类似代码:
1.html
<script>
function check(){
var obj1=document.getElementById("myframe");
alert(obj1.src);
//alert(obj1.window.document.myform.username.value);//Error
var obj2=document.frames("myframe");
alert(obj2.window.document.myform.username.value);
//alert(obj2.src);//Error
}
</script>
<body onload="check()">
<iframe id="myframe" name="myframe" src="2.html" frameborder="3" style="width:300;height:200;border-width:1;border-color:red;border-style:solid"></iframe>
</body>
2.html
<body>
<form name="myform">
用户名:<input type="text" name="username" value="test" />
</form>
</body>
4,在table中,如果在table中加入border="1" bordercolor="red",那么table中所有单元格都会加上厚度为1的红色边框,但是如果在table中加入css style="border-width:1;border-color:red;border-style:solid" 那么只会在整个table的最外面加上厚度为1的红色边框,分别如下图所示: 
当然第一个出现了双边框,这是因为没有设置cellspacing的缘故,只要在table中设计cellspacing="0",那么就变为单边框了。
5,许多时候我们需要在页面加载时能够通过javascript去动态操作html中的一些对象,对于这些操作我们最好是在body中定义onload操作,然后在该操作中去完成这些任务,尽量避免在html中嵌入script执行代码,因为对于比较大的页面,当这些脚本执行的时候,页面往往还没有加载完毕,因此许多页面对象还没有被生成,此时动态去改变很可能会报异常。
6,有时候我们需要在iframe子页面中调用父页面的javascript函数,例如在父窗口中定义了一个函数如下:
<html>
<script>
function loadImage(){
//...
}
</script>
<body>
//...
</body>
</html>
那么在iframe子页面中可以通过parent.loadImage()来实现调用,这也说明用户在页面定义的所有javascript函数都属于window对象之下。那么在父窗口如何调用子窗口中的函数呢,应该很简单了,就是获得子窗口对象,然后调用子窗口对象的window对象下的这些函数即可,例如iframe的name为myframe,在子窗口定义了一个函数getUserName,那么父窗口中的调用方式为document.frames("myframe").getUsername();另外对于父窗口调用子窗口中的方法,还要注意一个问题,就是子窗口的加载有时候会比较慢,如果子窗口正在加载,那么此时它的各种页面对象都不存在,那么当在父窗口调用子窗口的方法时,为了保险可以使用借助setTimeout来实现异步调用,即通过setTimeout指定一定时间之后(例如100ms),再执行调用,调用执行总是判断子窗口页面是否加载完毕,如果没有加载完毕,则继续使用setTimeout方法,循环往复直到子窗口被完全加载,然后执行子窗口的函数调用。既然这里解释了窗口间的异步调用,后面就不专门解释了。
from:asp学习网/title:强档推荐:web开发过程中要注意的问题/ time:2007-5-2 15:14:14
本文主题推荐,web开发