2
回答
javascript json 组合
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
for (var x in jsons) {
		  if ( ! jsons.hasOwnProperty(x)) {
		    continue;
		  }
		  d = jsons[x];
		  var arrs  = {"category" : 3,"name" : d.lab_name,"value" : parseInt(Math.random()*3+1),"onclick" : function(){clicka( d.lab_name , d.id )},}
		  for (var b in arrs) {
		  	alert(arrs[b]);
		  }
			option['series'][0]['nodes'].push(arrs);
		}





{clicka( d.lab_name , d.id )}

CLIcka的值没有获取到,这里应该怎么样,求大牛帮助啊。


举报
共有2个答案 最后回答: 3年前

for循环中,d会被重复覆盖,所以,你直接引用是错误的。你可以将值绑定到这个onclick上,试试改为:

"onclick" : function(lab_name,id){
    clicka( lab_name , id );
}.bind(null,d.lab_name,d.id);



如果你的运行环境版本不支持bind,请添加一段实现:

if (!Function.prototype.bind) {
    Function.prototype.bind = function (obj /*, arg1, arg2, ... */)
    {
        var func = this;
        var _slice = Array.prototype.slice;
        var _concat = Array.prototype.concat;
        var _args = _slice.call(arguments, 1);

        return function () {
            return func.apply(obj ? obj : this,
                              _concat.call(_args,
                                           _slice.call(arguments, 0)));
        };
    };
}



这样好像真是不行啊。

循环里面定义的这个 function(){clicka( d.lab_name , d.id )},调用的时候d这个变量就不存在了吧。

顶部