以下のコードでは、関数内から「colors」にアクセスすることはできませんが、「numColors」にはアクセスできます。getColors()関数は配列を適切に設定しているように見えますが、alertステートメントの結果からわかるように、init()関数は配列にアクセスできません。
このページは、「?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>