在下面的代碼中,我無法訪問函數中的「顏色」,但我可以訪問「numColors」。 getColors()函數似乎正確設置了數組,但init()函數無法訪問它,如alert語句結果所示。爲什麼我無法在此JavaScript代碼中訪問全局變量?
頁面可以使用參數字符串調用,例如「?colors = 0000FF | FF0000」。
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<script>
(function() {
var colors = [];
var numColors;
document.addEventListener("DOMContentLoaded", init, false);
function init() {
colors = getColors()
alert(numColors);
alert(colors);
}
function getColors() {
var data = getURLParameter('colors');
var list = data.split('|');
for (i = 0; i < list.length; i++) {
colors.push(list[i]);
}
numColors = colors.length;
alert(numColors);
alert(colors);
}
// from http://www.netlobo.com/url_query_string_javascript.html
function getURLParameter(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);
if (results == null) {
return "";
} else {
return results[1];
}
}
})();
</script>
</body>
</html>
當你警告(顏色)時會發生什麼? –
您的意思是「如警報聲明結果所示」?你在看什麼? – Mathletics
注意:'colors'和'numColors'不是全局變量,而是閉包變量。 – biziclop