好吧,我一开始就承认我有点头疼。
我有一些工作正常的代码。我创建了一个全局数组变量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
,所以我将在其中添加更多方法。宾语。) 最佳答案
将z1[r]
更改为this.z1[r]
我可能还会建议在范围内将其设置为变量以避免查找。
var zr = this.z1[r] = new ZeroClipboard.Client();
zr.addEventListener()
关于javascript - Javascript:将数组作为对象属性(和ZeroClipboard),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10068287/