2017-02-20 163 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函數中引用它。