循环函数数组的Javascript

循环函数数组的Javascript,javascript,Javascript,我是一个javascript新手——我正在尝试创建一个函数,当我点击一个按钮时,它将按顺序从我的数组中调用一个对象 <script type="text/javascript"> var myArray = ["aa","bb","cc","dd","ee"], num=0; function call() { document.getElementById("placeDiv").innerHTML = myArray[num

我是一个javascript新手——我正在尝试创建一个函数,当我点击一个按钮时,它将按顺序从我的数组中调用一个对象


<script type="text/javascript">

    var myArray = ["aa","bb","cc","dd","ee"],
        num=0;
    function call() {  
        document.getElementById("placeDiv").innerHTML = myArray[num];
        num++;
    };
</script>

<button onclick="call()">Click!</button>
<div id = "placeDiv"></div>
var myArray=[“aa”、“bb”、“cc”、“dd”、“ee”], num=0; 函数调用(){ document.getElementById(“placeDiv”).innerHTML=myArray[num]; num++; }; 点击

var myArray=[“aa”、“bb”、“cc”、“dd”、“ee”],
num=0;
函数调用(){
document.getElementById(“placeDiv”).innerHTML=myArray[num];
num++;
};
点击
它所做的只是显示“ee”

当然,您将在整个数组中循环,并将每个项目分配给该元素的
innerHTML
——并且只有最后一个项目会留在那里并显示出来

我想让它做的是当我点击按钮显示“aa”,然后当我再次按下它显示“bb”而不是“aa”等等

然后,您不能使用for循环,但必须手动跟踪计数器,并且每次调用
call
只执行一个步骤

var myArray = ["aa","bb","cc","dd","ee"];
var i=0;
function call() { 
    document.getElementById("placeDiv").innerHTML = myArray[i];
    if (i < myArray.length-1)
        i++;
    else
        i = 0; // restart, but you may as well show an error message
}
var myArray=[“aa”、“bb”、“cc”、“dd”、“ee”];
var i=0;
函数调用(){
document.getElementById(“placeDiv”).innerHTML=myArray[i];
if(i
它所做的只是显示“ee”

当然,您将在整个数组中循环,并将每个项目分配给该元素的
innerHTML
——并且只有最后一个项目会留在那里并显示出来

我想让它做的是当我点击按钮显示“aa”,然后当我再次按下它显示“bb”而不是“aa”等等

然后,您不能使用for循环,但必须手动跟踪计数器,并且每次调用
call
只执行一个步骤

var myArray = ["aa","bb","cc","dd","ee"];
var i=0;
function call() { 
    document.getElementById("placeDiv").innerHTML = myArray[i];
    if (i < myArray.length-1)
        i++;
    else
        i = 0; // restart, but you may as well show an error message
}
var myArray=[“aa”、“bb”、“cc”、“dd”、“ee”];
var i=0;
函数调用(){
document.getElementById(“placeDiv”).innerHTML=myArray[i];
if(i
试试这个:- 每次单击都会循环执行,并将值赋给元素innerHTML,因此它始终只包含数组中的最后一个值

试试这个:- 每次单击都会循环执行,并将值赋给元素innerHTML,因此它始终只包含数组中的最后一个值


您正在使用innerHTML覆盖您的
placeDiv

尝试使用:

function call(){
  var yourVar= document.getElementById('placeDiv'); 
    for (var i=0; i < myArray.length; i++) {
           yourVar.innerHTML = yourVar.innerHTML + myArray[i];
 }
}
函数调用(){
var yourVar=document.getElementById('placeDiv');
对于(var i=0;i
您正在用innerHTML覆盖您的
placeDiv

尝试使用:

function call(){
  var yourVar= document.getElementById('placeDiv'); 
    for (var i=0; i < myArray.length; i++) {
           yourVar.innerHTML = yourVar.innerHTML + myArray[i];
 }
}
函数调用(){
var yourVar=document.getElementById('placeDiv');
对于(var i=0;i
您想要结束

var call = (function() {
    var i = 0,
    entries = ["aa", "bb", "cc", "dd", "ee"];
    return function() {
        return entries[i++ % entries.length];
    };
})();
这会将
i
entries
保留为私有值,并返回一个函数,该函数在每次调用时都会转到列表中的下一个条目。

您想要一个闭包

var call = (function() {
    var i = 0,
    entries = ["aa", "bb", "cc", "dd", "ee"];
    return function() {
        return entries[i++ % entries.length];
    };
})();

这会将
i
条目
保留为私有值,并返回一个函数,该函数每次调用时都会转到列表中的下一个条目。

缺少结束
}
?我认为您正在覆盖
placediv
div。这里有一个类似的问题:缺少结束
}
?我认为您正在覆盖
placediv
div。这里有一个类似的问题: