我是一个javascript新手 - 我正在尝试创建一个函数,当我单击一个按钮时,它将按顺序从我的数组中调出一个对象。
答案 0 :(得分: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
}
答案 1 :(得分: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;
}
答案 2 :(得分:1)
你想要一个闭包。
var call = (function() {
var i = 0,
entries = ["aa", "bb", "cc", "dd", "ee"];
return function() {
return entries[i++ % entries.length];
};
})();
这会将i
和entries
保留为私有值,并返回一个函数,该函数在每次调用时都会转到列表中的下一个条目。
答案 3 :(得分:0)
您正在使用innerHTML覆盖placeDiv
。
尝试使用:
function call(){
var yourVar= document.getElementById('placeDiv');
for (var i=0; i < myArray.length; i++) {
yourVar.innerHTML = yourVar.innerHTML + myArray[i];
}
}
答案 4 :(得分:-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>