好吧,我承认一开始我在这里有点头痛。Javascript:数组作为对象属性(&ZeroClipboard)
我已经有一些代码工作正常。我创建了一个全局数组变量z1=[];
,然后使用以下代码使用唯一引用密钥r将ZeroClipboard对象存储在数组中。 (这可能是自身邪恶的,但它的工作。)
function zc(r){
var a="RP"+r,b="RDC"+r,c="RP"+r;
z1[r]=new ZeroClipboard.Client();
z1[r].addEventListener('mouseDown',function(client){z1[r].setText(document.getElementById(c).innerHTML);});
z1[r].addEventListener('complete',function(client,text){$('#'+a).aH("#D6EBFF",1000);});
z1[r].glue(a,b);}
最近我意识到它是多么坏到极有Z1作为一个全局变量,所以我试图修补我的方式,并创建一个反对约束整个业务。但它不工作...
我已经做了以下内容:
var zc={
z1: [],
add:function(r){
var a="RP"+r,b="RDC"+r,c="RP"+r;
z1[r]=new ZeroClipboard.Client();
z1[r].addEventListener('mouseDown',function(client){z1[r].setText(document.getElementById(c).innerHTML);});
z1[r].addEventListener('complete',function(client,text){$('#'+a).aH("#D6EBFF",1000);});
z1[r].glue(a,b);}
}
现在我打电话zc.add(r)
而不是zc(r)
像以前一样。
我得到的Firebug错误是z1 is not defined
。为什么我的'add'
方法不能看到我的'z1'
属性?
[哦,之前有人问我为什么不干脆把z1
在zc
,因为它是,那是因为我访问z1
来自其他地方的代码,所以我打算进一步方法添加到该对象。 )
感谢所有:)毕竟,即使当它工作在本身它不会做我想要的,因为ZeroClipboard客户端EventListeners没有找到z1数组将文本复制到剪贴板。 C'est la vie :) – Nick 2012-04-09 02:52:50