注册 登录
编程论坛 ASP技术论坛

请教一段入门级小代码

lovealy 发布于 2007-08-11 00:12, 683 次点击
function MM_findObj(n, d) {
var p,i,x;
if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById)
x=d.getElementById(n);
return x;
}
我刚入门的 看了几个例子都有这一段 只说明用来检查对象 没有详细的注释 但是我看了两天,还是看不懂 希望帮我解释下 谢谢
变量的作用和每句的注释 大恩不言谢 我会报答大家的
3 回复
#2
愿望2007-08-11 10:00
function MM_findObj(n, d) { // 从 d 中寻找对象 n
var p,i,x;
if(!d) d=document; // 若 d 为空,则从 document 对象中寻找
if((p=n.indexOf("?"))>0&&parent.frames.length) { // 若 n 中有“?”且文档有多个 frame,则先把“?”的位置存入 p
d=parent.frames[n.substring(p+1)].document; // 获取指定的 frame 对应的 document
n=n.substring(0,p);} // 获取 n 中除掉指明 frame 的内容(即“?”与相关的内容)
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById)
x=d.getElementById(n);
// 以上 7 行适应不同的浏览器,作用是在 d 中寻找 n 并存入 x
return x; // 返回找到的 x
}

这代码 MS 以前没见过,不过感觉 MS 是很常用的代码
另外我不知道 n 的输入格式,所以有些地方只是猜测了
#3
lovealy2007-08-11 19:49

太感谢,我先看看

#4
lovealy2007-08-11 20:07
比如定义name="textform"的form为text,
MM_findObj("textform")只用了一个参数
那应该就是参数n的引用吧,好象是判断文本中是否为关键字,不知道是不是这样?
n.substring(p+1)这个的用法有点怪,为什么只有一个参数,是去掉从字符串开始到P+1的字符串,取剩下的?还是刚好相反?

大概我 是明白了谢谢啦
1