<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
    var arr = new Array();
    arr['name'] = 'test';
    arr['age'] = '23';
    arr['gender'] = '女';
    show_list(arr);
});function show_list(arr)
{
    $('body').append('<a href="javascript:;" onclick="show_mini_layer(this, \'' + arr + '\')">' + arr['name'] + '</a>');
}
function show_mini_layer(arr)
{
    alert(arr['name']);
}
</script>如何将arr作为参数传入show_min_layer中

解决方案 »

  1.   

    show_mini_layer函数需要整个数组吗,如果只需要一个,可以
    $('body').append('<a href="javascript:;" onclick="show_mini_layer(this, \'' + arr['name'] + '\')">' + arr['name'] + '</a>');function show_mini_layer(name)
    {
      alert(name);
    }
    </
      

  2.   

    查看生成后的页面源码<a href="javascript:;" onclick="show_mini_layer(this, '')">test</a>输入的arr就是个空
      

  3.   

    show_mini_layer(thisshow_mini_layer需要参数arr,你传了个this,能不空吗?
      

  4.   


    function show_list(arr)
    {   
        $('body').append('<a href="javascript:;" onclick="show_mini_layer(\'' + arr + '\')">' + arr['name'] + '</a>');
    }
    function show_mini_layer(arr)
    {
        alert(arr['name']);
    }是的,写错了,o(╯□╰)o
    但是,还是不对,获得的值是undefined,不知道是怎么回事
      

  5.   

    生成的<a href="javascript:;" onclick="show_mini_layer...
    是在html里,又不是JavaScript,当然没法识别arr
      

  6.   

    你的arr是申明在$(document).ready(function() {
    里的,外边怎么能识别它呢?
      

  7.   

    var arr = new Array();
    $(document).ready(function() {  arr['name'] = 'test';
      arr['age'] = '23';
      arr['gender'] = '女';
      show_list(arr);
    });function show_list(arr)
    {
      $('body').append('<a href="javascript:void(0);" onclick="show_mini_layer(arr)">' + arr['name'] + '</a>');
    }
    function show_mini_layer(arr)
    {
      alert(arr['name']);
    }
    </script>
      

  8.   

    1:arr你那样定义后,实际上你得到的是一个空数组.按你的实际效果相当于定义了:var arr={};
    2:对象类型的话,你传参就不能那样使用了,得不到值
    如果arr是全局变量的话,直接使用
    $('body').append('<a href="javascript:;" onclick="show_mini_layer(this,arr)">' + arr['name'] + '</a>');
    如果不是全局变量,那下面的方法
    var _a=$('<a href="javascript:;">' + arr['name'] + '</a>').click(function(){
            show_mini_layer(this,arr);
        });
    $('body').append(_a);
      

  9.   

    但我已经说得很清楚了arr,在show_mini_layer(arr)的时候未定义,你还非要说,传参数可以,举个例子。function aaa()
    {
    var arr={};
    }function bbb()
    {
    show_mini_layer(arr);
    /*
    这里当然arr是未定义了,传参数是show_mini_layer的里边能看到参数,它的外边,仍然是看不到arr的。
    */
    }你那个错误跟上面的例子是一样的道理。
      

  10.   

    14楼的方法是用jQuery动态添加a的click,都通过jQuery来注册,也是能看到arr
      

  11.   

    参数范围问题,你定义在document.ready里面,外面怎么能用到呢,所以在你的下面那个方法肯定是undefine三。基础哦!
      

  12.   

    如果我不使用这种动态添加click的方法,就按照原帖的方法,可以实现吗?如果需要另外定义,该怎么定义才能获得那个数组值,查了下,还是不知道怎么写
      

  13.   

    大家都说得很清楚了,第一种办法就是将arr变为全局变量,然后不需要使用变量代入你仔细看看大家的回贴吧
      

  14.   

    你可以将你的数组转换为json字符串传递过去,然后再获取值!转换在使用,就OK了,刚才看错了!Sorry...
      

  15.   

    就是传参嘛<script type="text/javascript">
    function theforever_knight(o)
    {
      for(var i in o) alert(o[i]);
    }
      var arr = new Array();
      arr['name'] = 'test';
      arr['age'] = '23';
      arr['gender'] = '女';
      theforever_knight(arr);
    </script>