[英]How do i make a Javascript array global?
原諒我我需要一點幫助,我沒有編碼人員的大腦,實際上,我給我留下了深刻的印象,但是現在我需要一點幫助。
我正在嘗試構建一個播放器,以將xml文件從xml文件加載到div中,然后能夠使用上一個和下一個按鈕瀏覽頁面。 到目前為止,我已經設法加載了xml,將其轉換為數組並加載了第一頁,但是當我單擊上一個和下一個按鈕時,我得到“頁面未定義”。
這是代碼:
$(document).ready(function(){
var i = 0;
$.ajax({
type: "GET",
url: "studyguide/new_course.xml",
dataType: "xml",
success: function(xml) {
pages = parseXml(xml)
doStuff(pages);
loadFirstPage(pages);
} // END success
}); //END ajax
function parseXml(xml) {
var pages = [];
$(xml).find("page").each(function() {
pages.push({
title: $(this).find("title").text(),
url: $(this).find("url").text()
}); // END .push
}); // END .each
return pages;
} // END parseXML
function doStuff(pages) {
//Do some javascript stuff with the response
alert(pages[0].title);
alert(pages[0].url);
} // END doStuff
function loadFirstPage(pages){
//alert(pages[i].url);
$('#displayResults').html('<img src="../images/495.gif" />');
$( "#displayResults" ).load(pages[i].url, function() {
}) //END .load
}; //END loadFirstPage
function loadPage(pages){
//alert(pages[i].url);
$('#displayResults').html('<img src="../images/495.gif" />');
$( "#displayResults" ).load(pages[i].url, function() {
}) //END .load
};// END loadPage
$('#prev').bind('click', function(pages) {
i--;
//alert(i);
loadPage();
}) //END click
$('#next').bind('click', function(pages) {
i++;
//alert(i);
loadPage();
}) // END click
}); // END ready
和xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<course>
<section name = "Section One">
<page>
<title>Page 1</title>
<url>studyguide/page1.html</url>
<instructions></instructions>
</page>
<page>
<title>Page 2</title>
<url>studyguide/page2.html</url>
<instructions></instructions>
</page>
<page>
<title>Page 3</title>
<url>studyguide/page3.html</url>
<instructions></instructions>
</page>
</section>
<section name = "Section Two">
<page>
<title>Page 1</title>
<url>studyguide/page4.html</url>
<instructions></instructions>
</page>
<page>
<title>Page 2</title>
<url>studyguide/page5.html</url>
<instructions></instructions>
</page>
</section>
</course>
所以我有兩個問題,首先是如何使數組成為全局數組,以便可以由loadPage函數使用。 其次,首先有沒有更好的方法可以做到這一點。 xml可能包含5頁或100頁,所以我想保持動態。
謝謝
感謝您的幫助。 我進行了一些更改,現在我得到“ pages [I]未定義。抱歉,我不是天生的編碼員,所以您必須慢慢跟我走。
$(document).ready(function(){
var i = 0;
var pages = [];
$.ajax({
type: "GET",
url: "studyguide/new_course.xml",
dataType: "xml",
success: function(xml) {
pages = parseXml(xml)
doStuff(pages);
loadFirstPage(pages);
} // END success
}); //END ajax
function parseXml(xml) {
//var pages = [];
$(xml).find("page").each(function() {
pages.push({
title: $(this).find("title").text(),
url: $(this).find("url").text()
}); // END .push
}); // END .each
return pages;
} // END parseXML
function doStuff(pages) {
//Do some javascript stuff with the response
alert(pages[0].title);
alert(pages[0].url);
} // END doStuff
function loadFirstPage(pages){
//alert(pages[i].url);
$('#displayResults').html('<img src="../images/495.gif" />');
$( "#displayResults" ).load(pages[i].url, function() {
}) //END .load
}; //END loadFirstPage
function loadPage(pages){
//alert(pages[i].url);
$('#displayResults').html('<img src="../images/495.gif" />');
$( "#displayResults" ).load(pages[i].url, function() {
}) //END .load
};// END loadPage
$('#prev').bind('click', function(pages) {
i--;
//alert(i);
loadPage(pages);
}) //END click
$('#next').bind('click', function(pages) {
i++;
alert(i);
loadPage(pages);
}) // END click
}); // END ready
要回答第一個問題,如果不將var
放在變量聲明的前面,它將變為全局變量(在window對象上)。 這樣做通常被認為是一個壞主意。 我個人可能會在您的ready
函數中聲明該變量,然后將該變量用於該范圍內的其他函數。
這里的另一個觀察結果是,您使用參數設置了loadPage
函數,但是在調用它時並沒有傳遞任何信息。
我認為您的方法效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.