永发信息网

怎么去理解这一段JS?

答案:2  悬赏:30  手机版
解决时间 2021-02-20 16:12
  • 提问者网友:风月客
  • 2021-02-19 16:46
<script type="text/javascript">
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
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;
}

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
</script>

麻烦大神们说得详细点
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-02-19 17:10
< script type = "text/javascript" >
// 预先加载图片
function MM_preloadImages() { //v3.0
    var d = document;
    // document.images存在的话
    if (d.images) {
    // 清空d.MM_p数组
        if (!d.MM_p) d.MM_p = new Array();
        // 位序和数组长度
        var i, j = d.MM_p.length,
        // 参数表
        a = MM_preloadImages.arguments;
        // 对传入的参数循环
        for (i = 0; i < a.length; i++) 
        // 如果传入的当前参数不是以#开头的
        if (a[i].indexOf("#") != 0) {
           // 存入Image对象
            d.MM_p[j] = new Image;
            // 以当前参数作为Image对象的src
            d.MM_p[j++].src = a[i];
        }
    }
}

function MM_swapImgRestore() { //v3.0
    var i, x, a = document.MM_sr;
    // 迭代document.MM_sr 
    for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
    // 复制src 
     x.src = x.oSrc;
}

function MM_findObj(n, d) { //v4.01
    var p, i, x;
    // 取d=document
    if (!d) d = document;
    // 如果"?"存在于n内 并且不在第一位 而且父窗口的frames大于0
    if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
       // 取父窗口下面的名字为"n的第p位以后的字符串"的frames
        d = parent.frames[n.substring(p + 1)].document;
        // 从0到p位截取n
        n = n.substring(0, p);
    }
    // document[n]存在并且d.all存在 x为d.all[n]
    if (! (x = d[n]) && d.all) 
    x = d.all[n];
    // 迭代document.forms x为d.forms[i][n]  第i个form的第n-1个;
    for (i = 0; ! x && i < d.forms.length; i++) 
    x = d.forms[i][n];
    // 迭代document.layers
    for (i = 0; ! x && d.layers && i < d.layers.length; i++) 
    // 查找特定对象
    x = MM_findObj(n, d.layers[i].document);
    // x取id为n的对象
    if (!x && d.getElementById) 
    x = d.getElementById(n);
    return x;
}

function MM_swapImage() { //v3.0
    var i, j = 0,
    x, a = MM_swapImage.arguments;
    document.MM_sr = new Array;
    // 定义特定的规则 如何交换图片
    for (i = 0; i < (a.length - 2); i += 3) 
    if ((x = MM_findObj(a[i])) != null) {
        document.MM_sr[j++] = x;
        if (!x.oSrc) x.oSrc = x.src;
        x.src = a[i + 2];
    }
} < /script>/从代码大致来看应该是实现了一个二维图片矩阵
然后每次打乱里面的内容 实现矩阵内的图片变换换位置
全部回答
  • 1楼网友:零点过十分
  • 2021-02-19 17:20

结束的条件就是j = document.getelementbyid(listname+"_"+i) 取不到对象的时候.

这时 j == undefined, 循环就结束了

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯