标题:请教一段入门级小代码
只看楼主
lovealy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-9
 问题点数:0 回复次数:3 
请教一段入门级小代码
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;
}
我刚入门的 看了几个例子都有这一段 只说明用来检查对象 没有详细的注释 但是我看了两天,还是看不懂 希望帮我解释下 谢谢
变量的作用和每句的注释 大恩不言谢 我会报答大家的
搜索更多相关主题的帖子: 入门 parent 代码 document 
2007-08-11 00:12
愿望
Rank: 1
等 级:新手上路
威 望:1
帖 子:111
专家分:0
注 册:2007-7-28
得分:0 
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 的输入格式,所以有些地方只是猜测了

2007-08-11 10:00
lovealy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-9
得分:0 

太感谢,我先看看

2007-08-11 19:49
lovealy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-9
得分:0 
比如定义name="textform"的form为text,
MM_findObj("textform")只用了一个参数
那应该就是参数n的引用吧,好象是判断文本中是否为关键字,不知道是不是这样?
n.substring(p+1)这个的用法有点怪,为什么只有一个参数,是去掉从字符串开始到P+1的字符串,取剩下的?还是刚好相反?

大概我 是明白了谢谢啦
2007-08-11 20:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-161866-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072593 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved