2013-06-19 15 views
-1

您好我有下面的代码使用Javascript - 可变知名度

var idx = 0; 
var size = 0; 
do { 
    response.push({ 
     key: "data" + idx, 
     ajaxOptions: function() { 
      var data = this.getPref("groupsCN"); 
      var items = data.split(';'); 
      size = items.length; 
      idx++; 
      alert('inside index: ' + idx + ' < inside length ' + size); 
      return { 
       url: '/rest/adrestresource/1.0/activedirectory/findgroups&[email protected]&Bezhesla1&localhost&', 
       type: "GET", 
       dataType: "xml" 
      } 
     } 
    }); 
    alert('outside index: ' + idx + ' < outside length ' + size); 
} while (idx < size); 

功能getPref负载串与一些值由;分。重点是遍历所有这些值,并与他们做些什么。但下面的代码输出

外指数:0 <外部长度:0

因此它意味着变量idxsize未在函数内部修改。但我不知道为什么?

我必须调用this.getPref()ajaxOptions -> function,因为它不工作之外吧(我不知道为什么,这个功能是Atlassian的小工具的JavaScript框架的一部分)

+0

是否有一个原因,你把这么多的空间在你的代码的左侧?正确格式化的代码更易于读取IMO。 –

+0

你永远不会调用设置'idx'或'size'的函数。 – JJJ

+0

sry,我从我的IDE拷贝了代码,结果搞砸了 – user1453857

回答

2

你是不是执行功能,您只是匿名函数赋值给对象文字的属性ajaxOptions。为了执行一个功能的使用是这样的:

var idx = 0; 
var size = 0; 
do { 
    response.push({ 
     key: "data" + idx, 
     ajaxOptions: (function() { 
      var data = this.getPref("groupsCN"); 
      var items = data.split(';'); 
      size = items.length; 
      idx++; 
      alert('inside index: ' + idx + ' < inside length ' + size); 
      return { 
       url: '/rest/adrestresource/1.0/activedirectory/findgroups&[email protected]&Bezhesla1&localhost&', 
       type: "GET", 
       dataType: "xml" 
      } 
     })() 
    }); 
    alert('outside index: ' + idx + ' < outside length ' + size); 
} while (idx < size); 
0

尝试这样的:

var idx = 0; var size = 0; var self = this; 

var data = function() { return self.getPref("groupsCN"); }; 
+0

这是我第三次或第四次说同样的事情:**不要引用自己的文本**不要把'''标记放在前面不是来自其他地方的直接引用**的文本。你明白我想说什么吗? – JJJ