快速提问。
我有一个包含3个函数的数组。当我调用我想要执行的特定函数时,它不响应数组中的特定索引。它只执行所有功能,直到它到达最后一个功能。
以下是代码:
<p id="sometext">Change Color</p>
<script>
function paintRed() {
var text = document.getElementById('sometext');
text.style.color = "red";
}
function paintBlue() {
var text = document.getElementById('sometext');
text.style.color = "blue";
}
function paintYellow() {
var text = document.getElementById('sometext');
text.style.color = "yellow";
}
var arrcolor = [ paintRed(), paintBlue(), paintYellow()];
arrcolor[0]; //This returns the yellow color and not red//
</script>
所以我的
更改颜色
总是返回黄色(数组中的最后一个函数),无论我调用哪个索引,即(arrcolor [0],arrcolor [1])。 p>希望它有意义。谢谢。
答案 0 :(得分:5)
答案 1 :(得分:4)
你应该将函数添加到数组中,而不是像以下那样调用它们:
{{1}}
稍后,您可以致电每个人:
{{1}}
当你正在调用一个函数时,不要忘记最后的{{1}}。
答案 2 :(得分:1)
我认为它应该是这样的:
<p id="sometext">Change Color</p>
<script>
function paintRed() {
var text = document.getElementById('sometext');
text.style.color = "red";
}
function paintBlue() {
var text = document.getElementById('sometext');
text.style.color = "blue";
}
function paintYellow() {
var text = document.getElementById('sometext');
text.style.color = "yellow";
}
var arrcolor = [ paintRed, paintBlue, paintYellow];
arrcolor[0]();
</script>
描述:数组只存储一个函数引用,当你取消引用它时,它将被调用。
答案 3 :(得分:0)
删除功能名称var arrcolor = [ paintRed(), paintBlue(), paintYellow()]
后面的括号。
在声明和初始化arrcolor
时,您已经调用了函数,因此它将存储函数的返回值,在这种情况下将给出[undefined, undefined, undefined]
。
答案 4 :(得分:0)
是因为你在数组中执行每个函数,但最后一个函数是paintYellow()
外观:
var arrcolor = [ paintRed(), paintBlue(), paintYellow()];
现在你的arrcolor有3个元素是“未定义的”,因为你的每个函数都没有返回任何数据(你可以检查它 - typeof(arrcolor[0]) == "undefined"
)。如果要调用第一个元素,则应将数组定义为“函数指针”,如下所示:
var arrcolor = [ paintRed, paintBlue, paintYellow];
然后执行您选择的paintRed
:
arrcolor[0]();