0

所以我有一个通用的 javascript 集合,形式如下:

function populateCollection(){
    var Collection = new Array();
    Collection['A'] = 'Awesome';
    Collection['B'] = 'Better';
    Collection['C'] = 'Cool';
    return Collection;
}

在一个文件中(假设它称为 CommonLib.js)。

现在说我想将此文件保留为一个公共库,以便由几个不同的 JS 文档访问(假设该库非常大)。

从名为 jsDoc1.js 的文档中迭代此集合的最佳方法是什么?

我试了一下:

<!DOCTYPE html>
<html lang="en">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
function dropdown() { 
    for(var i in languageCollection){
        alert(i);
    }
}
<script>
<body>
<input type="text" name="example" id="color" onclick="dropdown()">
</body>

但是我不断收到 languageCollection not defined 错误。我对 jscript 和 jquery 很陌生……对我有什么建议吗?

谢谢!

4

1 回答 1

4

您没有将文件包含在您的收藏中。插入以下语句:

 <script src="/path/to/CommonLib.js"></script>

此外,您只定义了一个函数,该函数返回您的集合并且没有全局对象。所以你首先必须调用那个函数,例如,

var myCol = populateCollection();

然后你可以像下面这样访问它:

for ( var i in myCol ) {
  if( myCol.hasOwnProperty( i ) {
    // do your stuff
    alert( i );
  }
}

或者,您可以更改您的函数以使用全局变量,该变量对每个范围都是可见的。

function populateCollection(){
    window.myNamespace = window.myNamespace  || {};
    window.myNamespace.Collection = {};
    window.myNamespace.Collection['A'] = 'Awesome';
    window.myNamespace.Collection['B'] = 'Better';
    window.myNamespace.Collection['C'] = 'Cool';
}

顺便说一句,您正在使用数组,就好像它是一个对象一样。如果没有其他方面可以证明这一点,请将您的功能更改为以下内容:

function populateCollection(){
    return {
      'A': 'Awesome',
      'B': 'Better';
      'C': 'Cool'
    };
}
于 2012-06-05T14:46:31.867 回答