函数未在页面就绪时运行
Function not running at page ready
我有这样的代码集:
$(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
变量传递到另一个函数中,但它显然不起作用。
<!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?
我在您的编辑历史中看到原始代码是
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,它是对原始代码的修改
您有一些小错误——主要是在全局声明var gencolor之后,在selectColor函数内对其进行了declaration。
这很好用(看看这个小提琴):
//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);
}
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Ajax请求文档就绪会导致jquery加载缓慢
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 函数未在页面就绪时运行
- 在文档就绪上运行 PHP 函数
- 使用 jquery 在 django 文档准备就绪时运行代码
- 让自执行函数在dom就绪时运行
- 如何在jQuery中运行通过AJAX加载的DOM就绪函数
- Vue.js 路由器:在组件准备就绪时运行代码