2017-02-20 109 views
1

我正在使用jQuery并在document.ready上填充数组。从onclick函数访问javascript数组

在我的页面中,我有一些单击事件的元素。我在document.ready函数外定义了该函数。

我似乎无法弄清楚如何从我的onclick函数中访问该数组变量。

为了简化,我想是这样工作的:

$(document).ready(function(){ 
    var artists = new Array(); 
    artists.push('item1'); 
    artists.push('item2'); 
}); 

function clickLink() { 
    alert(artists[0]); 
} 
+1

阅读'var'的功能。为什么这会阻止'artists'在其他函数中被访问(更少,存在)? – user2864740

回答

3

许多方法中,最简单的方法之一是将.ready()函数内的点击手柄移动。而你需要它有绑定的元素,而不是内联属性:

$(document).ready(function(){ 
    var artists = new Array(); 
    artists.push('item1'); 
    artists.push('item2'); 

    $('#idOfTheElement').click(function() { 
    alert(artists[0]); 
    }); 
}); 
2

喜你失去了产生阵列的范围,所以有两种方法可以解决这个问题

都放在同一个范围:

$(document).ready(function(){ 
     var artists = new Array(); 
     artists.push('item1'); 
     artists.push('item2'); 
    function clickLink() { 
     alert(artists[0]); 
    } 
    }); 

申报数组作为全球:

var artists = new Array(); 
$(document).ready(function(){ 

     artists.push('item1'); 
     artists.push('item2'); 

    }); 
function clickLink() { 
     alert(artists[0]); 
    } 
1

您必须声明document.ready()功能外artists阵列并绑定点击事件的函数。

var artists = new Array(); 
 

 
$(document).ready(function() { 
 
    artists.push('item1'); 
 
    artists.push('item2'); 
 
}); 
 

 
$('button').click(function() { 
 
    console.log(artists[0]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button>click</button>

0

一个简单的解决方案是,当你声明数组变量删除var关键字,这将使变量全球和不推荐,另一个解决办法是外界宣布你的阵列该函数可以从onclick函数中引用它。