我想用循环语句完成对匿名函数的引用 好像出错了 请帮我看看

[复制链接]
查看11 | 回复4 | 2011-1-3 15:48:00 | 显示全部楼层 |阅读模式
请教网页编程高手:
JavaScript 里面为什么用
for (var i=0; i<36; i++){

document.getElementById("seat" + num.toString(i)).onclick = function(evt) { showSeatStatus(i); };
}
代替下列代码时出来的结果不一样? 是不是引用函数不能放在循环语句里面?

document.getElementById("seat0").onclick = function(evt) { showSeatStatus(0); };

document.getElementById("seat1").onclick = function(evt) { showSeatStatus(1); };

document.getElementById("seat2").onclick = function(evt) { showSeatStatus(2); };

document.getElementById("seat3").onclick = function(evt) { showSeatStatus(3); };

document.getElementById("seat4").onclick = function(evt) { showSeatStatus(4); };

document.getElementById("seat5").onclick = function(evt) { showSeatStatus(5); };
//中间以此类推,省略
(34); };

document.getElementById("seat35").onclick = function(evt) { showSeatStatus(35); };

回复

使用道具 举报

千问 | 2011-1-3 15:48:00 | 显示全部楼层
m=dct(IM(x,y)) 这里是函数定义,不能带有函数,因为他认为IM(x,y)是一个函数调用,这是不可以的.我猜你想把矩阵IM作为参数进来.可以直接用:function m=dct(IM)调用:m=dct(IM)直于那个x,y是你的中心,你可以在这个函数里定义,如果还要求能求其他的点,就用楼上说的那个方法,带上下标的:function m=dct(IM,x,y) .另外,你的还有问题就是t=t+(c(k,(x-i),(y-j))-u(k,x,y))*(c(k,(x-i),(y-j))-u(k,x,y)); 这些会造成越界了,因为例如: x=2,i=8,x-i=-6;就没有办法访问了.记住一点:MATLAB的数组下标
回复

使用道具 举报

千问 | 2011-1-3 15:48:00 | 显示全部楼层
可以用js里的eval解决你的问题.首先要明白eval。这个是可以把字符串代码,直接当做js运行。比如var ss="alert(1);";这个时候ss保存的是文本。使用 eval(ss);这样就相当于,执行了ss里面的js语句。现在看看你提出的问题。相当与把循环里的document.getElementById(
回复

使用道具 举报

千问 | 2011-1-3 15:48:00 | 显示全部楼层
页面要加载完 在function a(){ for (var i=0; i<36; i++){
document.getElementById("seat" + num.toString(i)).onclick = function(evt) { showSeatStatus(i); };
回复

使用道具 举报

千问 | 2011-1-3 15:48:00 | 显示全部楼层
不是引用的问题,可能还是数字的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行