javascript json 组合

发布于 2021-11-26 04:19:25 字数 730 浏览 808 评论 2

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的值没有获取到,这里应该怎么样,求大牛帮助啊。


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

累赘 2021-11-29 21:21:15

这样好像真是不行啊。

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

拥有 2021-11-29 12:31:05

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)));
        };
    };
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文