jquery 函数中传入数组参数获取不到值

jaksmine 2012-10-24 10:25:58
<!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中
...全文
810 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaksmine 2012-10-24
  • 打赏
  • 举报
回复
虽然还不是很明白,但是问题已解决,谢谢大家的帮忙,我还要把基础知识多看看
泡泡鱼_ 2012-10-24
  • 打赏
  • 举报
回复
大家都说得很清楚了,第一种办法就是将arr变为全局变量,然后不需要使用变量代入

你仔细看看大家的回贴吧
jaksmine 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

1:arr你那样定义后,实际上你得到的是一个空数组.按你的实际效果相当于定义了:var arr={};
2:对象类型的话,你传参就不能那样使用了,得不到值
如果arr是全局变量的话,直接使用
JScript code
$('body').append('<a href="javascript:;" onclick="show_mini_layer(this,arr)">' + arr['……
[/Quote]
如果我不使用这种动态添加click的方法,就按照原帖的方法,可以实现吗?如果需要另外定义,该怎么定义才能获得那个数组值,查了下,还是不知道怎么写
sgyyz 2012-10-24
  • 打赏
  • 举报
回复
参数范围问题,你定义在document.ready里面,外面怎么能用到呢,所以在你的下面那个方法肯定是undefine三。基础哦!
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
14楼的方法是用jQuery动态添加a的click,都通过jQuery来注册,也是能看到arr
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
但我已经说得很清楚了arr,在show_mini_layer(arr)的时候未定义,你还非要说,传参数可以,举个例子。

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

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

你那个错误跟上面的例子是一样的道理。
泡泡鱼_ 2012-10-24
  • 打赏
  • 举报
回复
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);
jaksmine 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

唉,自己申请俩号玩儿啊
[/Quote]

有时没人回帖,就得自己顶帖啊。。。。
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
唉,自己申请俩号玩儿啊
caochengli 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 8 楼 的回复:

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


我是在里面定义的,但是我是把它作为参数传递给函数的,也不行吗
[/Quote]

是的,以参数传递应该是可以的啊
caochengli 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

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

我是在里面定义的,但是我是把它作为参数传递给函数的,也不行吗
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
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>
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
你的arr是申明在$(document).ready(function() {
里的,外边怎么能识别它呢?
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
生成的<a href="javascript:;" onclick="show_mini_layer...
是在html里,又不是JavaScript,当然没法识别arr
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

show_mini_layer(this

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


function show_list(arr)
{
$('body').append('<a href="javascript:;" onclick="show_mini_layer(\'' + arr + '\'……
[/Quote]
jaksmine 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

show_mini_layer(this

show_mini_layer需要参数arr,你传了个this,能不空吗?
[/Quote]

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,不知道是怎么回事
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
show_mini_layer(this

show_mini_layer需要参数arr,你传了个this,能不空吗?
jaksmine 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

查看生成后的页面源码

<a href="javascript:;" onclick="show_mini_layer(this, '')">test</a>

输入的arr就是个空
[/Quote]

我知道,但是不知道该怎么写才正确
oN5GrzoN 2012-10-24
  • 打赏
  • 举报
回复
查看生成后的页面源码

<a href="javascript:;" onclick="show_mini_layer(this, '')">test</a>

输入的arr就是个空
jaksmine 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

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

function show_mini_layer(name)
{
……
[/Quote]

是的,我上面只是测试,整个数组值都是需要的
caochengli 2012-10-24
  • 打赏
  • 举报
回复
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)

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧