Javascript ';对于';用于此简单脚本中不工作的数组的循环

Javascript ';对于';用于此简单脚本中不工作的数组的循环,javascript,arrays,Javascript,Arrays,请参阅以下代码: function overall() { var message = ["dog", "cat", "bear", "penguin", "tiger", "eagle", "John Doe"]; function forward() { var A = document.getElementById('text'); for (var i = 0; i < message.length+1; i++) { if (A.innerHTML

请参阅以下代码:

function overall() {
var message = ["dog", "cat", "bear", "penguin", "tiger", "eagle", "John Doe"];
function forward() {
    var A = document.getElementById('text');
    for (var i = 0; i < message.length+1; i++) {
        if (A.innerHTML===message[i]) {
            A.innerHTML = message[i+1];
        };
    };
};
function backward() {
    var A = document.getElementById('text');
    for (var i = 0; i < message.length+1; i++) {
        if (A.innerHTML===message[i]) {
            A.innerHTML = message[i-1];
        };
    };
};
};
函数整体(){
var消息=[“狗”、“猫”、“熊”、“企鹅”、“老虎”、“鹰”、“约翰·多伊”];
函数forward(){
var A=document.getElementById('text');
对于(变量i=0;i
在上面的JS脚本中,我的意图是当调用forward()函数时,.innerHTML中的动物应该在使用for循环的名为“message”的数组中更改为动物。 类似地,当调用backward()函数时,'.innerHTML'中的动物应更改为所述数组中该动物之前的动物

我验证了我的脚本,据推测,没有语法错误。这意味着我的逻辑有错误。请帮帮我。谢谢

HTML:

<html>
<head></head>
<body>
   <p id="text">dog</p>
   <div id='right' onclick="forward()"></div>
   <div id="left" onclick="backward()"></div>
</body>
</html>


您将永远无法调用
向前
向后
,因为它们被包装在另一个函数(
总体
)中,并且您不会以任何方式返回它们。他们是私人的。您甚至在
函数中也没有调用它们,所以这里显示的基本上是一个死代码:)

作为旁注:为什么要用分号
在<代码>之后,对于<代码>,<代码>如果<代码>和<代码>函数<代码>语句???

也许您想要这样做

var message=[“狗”、“猫”、“熊”、“企鹅”、“老虎”、“鹰”、“约翰·多伊”];
函数forward(){
var A=document.getElementById('text');
对于(变量i=0;i
<代码>

正当
更改节点时必须停止循环

例如,初始文本是
tiger
。您可以调用
forward()
。循环开始,对于
i=4
,它进入if内部,将
#text
中的文本更改为
eagle
。下一次迭代,
i=5
eagle===eagle
,您设置了
johndoe

您只需在第一次更改后停止循环:

if (A.innerHTML===message[i]) {
    A.innerHTML = message[i+1];
    break;
}

一旦找到匹配的文本,就应该使用break

   var message = ["dog", "cat", "bear", "penguin", "tiger", "eagle", "John Doe"];
function forward() {

      var A = document.getElementById('text');
      for (var i = 0; i < message.length-1; i++) {
          if (A.innerHTML===message[i]) {
              A.innerHTML = message[i+1];
              break;
          }
      }

}
function backward() {

       var A = document.getElementById('text');
       for (var i = 0; i < message.length-1; i++) {
       if (A.innerHTML===message[i]) {
        A.innerHTML = message[i-1];
        break;
    }
}

  }
var message=[“狗”、“猫”、“熊”、“企鹅”、“老虎”、“鹰”、“约翰·多伊”];
函数forward(){
var A=document.getElementById('text');
对于(变量i=0;i
这是普朗克

现在,你想怎么叫就怎么叫。但是您还需要检查第一个和最后一个位置,因为使用dog作为元素a中的文本调用向后函数将导致文本未定义。如果您希望文本旋转,那么也可以处理它。

这有助于您:

下一个 以前的 var消息=[“狗”、“猫”、“熊”、“企鹅”、“老虎”、“鹰”、“约翰·多伊”]; 函数forward(){ var A=document.getElementById('text'); 对于(变量i=0;i0;i--){ if(A.innerHTML==消息[i]){ A.innerHTML=消息[i-1]; 打破 } } }
函数整体(){
var消息=[“狗”、“猫”、“熊”、“企鹅”、“老虎”、“鹰”、“约翰·多伊”];
函数forward(){
var A=document.getElementById('text');
对于(变量i=0;i0){
A.innerHTML=消息[i-1];
};
};
};

};我会使用一个适用于前进和后退按钮(这里的div)的回调来完成这项工作

var message=[“狗”、“猫”、“熊”、“企鹅”、“老虎”、“鹰”、“约翰·多伊”],
pel=document.getElementById(“文本”),
idx=0,
getNext=e=>pel.innerText=e.target.id==“右”?消息[idx=++idx%message.length]
:message[idx=(message.length-(message.length----idx)%message.length)%message.length];
document.getElementById(“右”).onclick=getNe