我的代码设置如下:
$(document).ready(function() {
select_a_color();
});
function select_a_color(){
var myColors = ["#441540",
"#20A923",
"#EF5918",
"#E33EF3",
"#C6452B",
"#F94B34",
"#236BD4",
"#51A224",
"#6E3372"];
var gencolor = myColors[Math.round(Math.random() * (myColors.length - 1))];
alert(gencolor);
}
每次调用该函数时,都应该使用gencolor
的值更改alert
和(测试时)gencolor
。我需要这个在我的页面最初加载时运行,因为AJAX查询需要颜色,但是当我的页面加载时我无法运行它。请注意,如果它不是函数,则会正确生成gencolor
。
我最终得到了未定义gencolor的错误。
我错过了什么?
UPDATE EDIT :做了一些更改,我得到了运行的功能,但它不会正确传递变量gencolor
。
var gencolor;
function selectColor(gencolor){
var myColors = ["#441540",
"#20A923",
"#EF5918",
"#E33EF3",
"#B46BF9",
"#D95AA3",
"#622469",
"#FB5AE8",
"#51A224",
"#6E3372"];
var gencolor = myColors[Math.round(Math.random() * (myColors.length - 1))];
alert(gencolor); //THIS WORKS!
}
function load_test_map2(gencolor) {
selectColor();//THIS SUCCESSFULLY TRIGGERS THE FUNCTION AND ALERT WORKS
console.log(gencolor); //THIS IS UNDEFINED
}
我正在尝试将gencolor
变量传递给另一个函数,但它显然无效。
答案 0 :(得分:0)
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
$(document).ready(function() {
select_a_color();
});
function select_a_color(){
var myColors = ["#441540",
"#20A923",
"#EF5918",
"#E33EF3",
"#C6452B",
"#F94B34",
"#236BD4",
"#51A224",
"#6E3372"];
var gencolor = myColors[Math.round(Math.random() * (myColors.length - 1))];
console.log(gencolor);
}
</script>
</body>
</html>
执行此操作并查看控制台并刷新页面,我得到以下输出:
#F94B34
#51A224
#E33EF3
#F94B34
..
所以它似乎有效。
也请console.log( message )
代替alert()
。
你是否还包括jQuery 之前脚本?
答案 1 :(得分:0)
我在您的修改历史记录中看到原始代码是
function load_test_map2() {
$(document).ready(function() {
select_a_color();
});
function select_a_color(){
var myColors = ["#441540",
"#20A923",
"#EF5918",
"#E33EF3",
"#C6452B",
"#F94B34",
"#236BD4",
"#51A224",
"#6E3372"];
var gencolor = myColors[Math.round(Math.random() * (myColors.length - 1))];
alert(gencolor);
}
只有两个错误
load_test_map2()
功能。但我们假设您忘记复制封闭式括号。load_test_map2
中接下来这两个功能,但如果您这样做,则需要调用它。试试这个Fiddle,这是对原始代码的修改
答案 2 :(得分:0)
你有一些小错误 - 主要是在全局声明后,在选择颜色函数中声明var gencolor。
这很好(见in this fiddle):
//global var
var gencolor;
$(document).ready(function() {
load_test_map2();
});
function selectColor(){
var myColors = ["#441540",
"#20A923",
"#EF5918",
"#E33EF3",
"#C6452B",
"#F94B34",
"#236BD4",
"#51A224",
"#6E3372"];
// set the global var, don't redeclare it
gencolor = myColors[Math.round(Math.random() * (myColors.length - 1))];
}
function load_test_map2() {
selectColor();
alert(gencolor);
}