日期:2014-05-16  浏览次数:20347 次

jquery 函数中传入数组参数获取不到值
<!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:arr你那样定义后,实际上你得到的是一个空数组.按你的实际效果相当于定义了:var arr={};
2:对象类型的话,你传参就不能那样使用了,得不到值
如果arr是全局变量的话,直接使用
JScript code
$('body').append('<a href="javascript:;" onclick="show_mini_layer(this,arr)">' + arr['name'] + '</a>');

------解决方案--------------------
但我已经说得很清楚了arr,在show_mini_layer(arr)的时候未定义,你还非要说,传参数可以,举个例子。

function aaa()
{
var arr={};
}

function bbb()
{
show_mini_layer(arr);
/*
这里当然arr是未定义了,传参数是show_mini_layer的里边能看到参数,它的外边,仍然是看不到arr的。
*/
}

你那个错误跟上面的例子是一样的道理。
------解决方案--------------------
参数范围问题,你定义在document.ready里面,外面怎么能用到呢,所以在你的下面那个方法肯定是undefine三。基础哦!