在下面的代码中,我无法从函数中访问“colors”,但我可以访问“numColors”。 getColors()函数似乎正确设置了数组,但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>
答案 0 :(得分:3)
getColors
在运行时修改colors
,然后用colors
的返回值覆盖getColors()
(因为它缺少return
语句)是undefined
。
删除作业:
function init() {
getColors()
或者更改getColors
以便它使用局部变量然后返回它。
答案 1 :(得分:2)
你的getColors()函数没有返回任何内容,但当你说:
时,你正在给它赋值。colors = getColors();
我认为只要你打电话就可以了:
getColors();
答案 2 :(得分:1)
init()
功能不应该是
function init() {
getColors();
alert(numColors);
alert(colors);
}
您正在将colors
设置为getColors
功能的返回值。但是,您不会返回值,因此colors
将设置为undefined
。