参数引用问题

来源:6-1 案例总结

Durians

2017-12-27 15:40:11

老师你好。在这次例子的讲解中,有提过function中的参数是无法获取的。例如在获取小圆点点击变到下一页,我们是使用赋值id的方式来调用的。那么假如我有两个onclick函数,第一个onclick函数中用到index++;然后我第二个onclick函数需要调用到这个index的值,这个时候就用不了。那么这个时候有什么方法解决吗?
写回答

6回答

怎么都被占用了呢

2017-12-29

你不是想在单击事件中,能够获取到,其他元素单击事件中改变的index值吗,你现在已经实现了呀。只是在单击事件的外部输出的是0,在单击事件内是可以访问到index的当前值的。

0
hurians
h 好的,谢谢老师,我刚才试了下,确实是有对应的值,但是不知道为什么第二个div里面每次获取的随机值总是那个最小值,我再研究下,谢谢老师!!
h017-12-29
共1条回复

怎么都被占用了呢

2017-12-28

看图标注

http://img.mukewang.com/climg/5a4461410001221413960606.jpg

代码是按照从上向下的顺序执行的,先定义了index为0,然后给button绑定单击事件,但是并未触发,所以index的值不改变,然后继续向下走,输出index,为0,继续向下,给button1绑定单击事件,也是未触发的哦。

代码只走这一遍。当点击按钮触发单击事件时,只是在内存中访问改变index的值,打印index的值那一句代码不会再执行了。所以只打印一个index的初始值0,而且只有那一次。

0
hurians
h 那老师,是否有解决的办法
h017-12-29
共1条回复

怎么都被占用了呢

2017-12-28

你已经获取到了呀,这样修改一下

http://img.mukewang.com/climg/5a44535a000122ef10450605.jpg

<!DOCTYPE html> 

<html> 

<head> 

  <meta charset="UTF-8"> 

  <title>Document</title> 

  <link rel="stylesheet" href="random.css"> 

</head> 

<body> 

  <div class="main"> 

    <h3>随机数中的随机数</h3>

     <input type="button" value="获取随机数" id="click" class="but">

      <input type="button" value="随机" id="click1" class="but">

       <div id="ran" class="ran"></div>

        <div id="min" class="min"></div> 

        <div id="lottery" class="min">

          

        </div> 

        <script type="text/javascript">

          var button=document.getElementById("click");

           var button1=document.getElementById("click1");

            var min=document.getElementById("min"); 

            // var lott=document.getElementById("ran1");

             var list=new Array(), len=list.length, index=0;

              var lott=document.getElementById("ran"); 

              button.onclick=function(){ 

                var random=Math.floor(Math.random()*101);

                 list[index]=random; index++;

                  lott.innerHTML+="您获取的随机数为"+random+";"+"<br/>"; 

                  list.sort(function(a,b) {return a-b;});

                   min.innerHTML="最小的值是"+list[0];

                    } 

                    button1.onclick=function(){

                     var random1=Math.floor(Math.random(index+1));

                      var lot=list[random1]; lott.innerHTML="您抽中的值为"+list[random1]; 

                    } 

        </script>

      </div>

       </body> 

       </html> 


0
hurians
h 最后是JS var button=document.getElementById("click"); var button1=document.getElementById("click1"); var min=document.getElementById("min"); var lott=document.getElementById("lottery"); var list=new Array(), len=list.length, index=0; var div=document.getElementById("ran"); button.onclick=function(){ var random=Math.floor(Math.random()*101); list[index]=random; index++; div.innerHTML+="您获取的随机数为"+random+";"+"<br/>"; list.sort(function(a,b) {return a-b;}); min.innerHTML="最小的值是"+list[0]; return index; } console.log(index) button1.onclick=function(){ var random1=Math.floor(Math.random(index+1)); var lot=list[random1]; lott.innerHTML="您抽中的值为"+list[random1]; } 有个问题就是在button1.onclick=function(){ var random1=Math.floor(Math.random(index+1)); var lot=list[random1]; lott.innerHTML="您抽中的值为"+list[random1]; }我在里面console.log(index)一直是0,折是我比较疑惑的点 可能之前表述不是很清晰,麻烦老师了
h017-12-28
共2条回复

怎么都被占用了呢

2017-12-28

是可以取到index的值的,只不过是你获取元素获取错了,html中没有id为ran1的元素哦

0
hurians
h 可能我中途来来回回改了很多次,把ID也改掉了- -,可是需要怎么获取啊
h017-12-28
共1条回复

怎么都被占用了呢

2017-12-27

你将你的代码放上来吧,方便帮你调试

0
hurians
h 复制过来格式就变了- -
h017-12-28
共2条回复

怎么都被占用了呢

2017-12-27

将index定义为全局变量就可以了,无论是哪个onclick函数都可以访问到index了。

0
hurians
h 老师,我刚才试了下,我就是把index定义为全局变量,类似 var index=0; button.click=function(){ xxxxx index++; } button1.onclick=function(){ index } 这个时候button1里面的index无论怎么用都是0
h017-12-27
共1条回复

0 学习 · 36712 问题

查看课程