问答详情
源自:1-5 编程练习

为什么这样写达不到效果?i的值传不到function内吗?

window.onload=function(){

var ps=document.getElementsByTagName("p");

var uls=document.getElementsByTagName("ul");

        for(var i=0;i<ps.length;i++){

        ps[i].onclick=function(){

           if(uls[i].style.display=="none")

          { uls[i].style.display="block";}

           else{uls[i].style.display="none"; }

           }

        }         

      }


提问者:VanCool无邪 2017-02-14 22:40

个回答

  • 非常有喜
    2017-03-14 13:54:06
    已采纳

    onclick这个是一个回调函数,回调函数里面的I值已经变为了ps.length;你可以像老师那样在外面保存i的值,或者利用闭包实现。

  • lemeo12
    2017-02-27 20:42:01

    var ps=document.getElementsByTagName("p");

    var uls=document.getElementsByTagName("ul");

    加上

    alert('ps.length');

    alert('uls.length');

    试试,如果没有数字显示,就在前面加上

    function $(id) 

        {

            return typeof id ==='string'?document.getElementById(id):id;

        }

    我就是遇到了这个问题。

  • 慕粉1626556005
    2017-02-15 16:57:43

    传不到 , 此时的i已经是 ps.length-1  了;