1

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

4

5 回答 5

1

你想要一个关闭。

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

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

于 2013-05-02T21:14:40.830 回答
1

它所做的只是显示“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
}
于 2013-05-02T21:05:42.353 回答
1

试试这个: - 您在每次点击时循环并为元素 innerHTML 分配值,因此它总是只有数组中的最后一个值。

演示

var myArray = ["aa","bb","cc","dd","ee"];
var i = 0;
function call(){
     if(myArray.length <= i) i=0;

       document.getElementById("placeDiv").innerHTML = myArray[i++];
}

如果您不想使用全局变量,也可以使用这种方式。

http://jsfiddle.net/zZ4Rm/

使用shift数组上的方法获取第一项,然后将其推回数组的末尾以进行循环。

var myArray = ["aa","bb","cc","dd","ee"];

function call(){
    var val = myArray.shift();
    myArray.push(val);
    document.getElementById("placeDiv").innerHTML = val;
}
于 2013-05-02T21:06:14.967 回答
0

您正在placeDiv用 innerHTML 覆盖您的内容。

尝试使用:

function call(){
  var yourVar= document.getElementById('placeDiv'); 
    for (var i=0; i < myArray.length; i++) {
           yourVar.innerHTML = yourVar.innerHTML + myArray[i];
 }
}
于 2013-05-02T21:11:42.703 回答
-2
<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>
于 2013-05-02T21:05:11.210 回答