为什么只显示 arr[0]

why show arr[0] only

为什么只显示数组的第一个元素?

代码:

<html>
<head>
   <meta charset="utf-8">
   <style>
       #news {
    height: 30px;
    background-color:rgba(0, 0, 255, 0.37);
    direction: rtl;
    line-height: 30px;

}
    </style>
     <p id="x"></p>
     <p id="y"></p>
     <p id="z"></p>
     <p id="w"></p>
</head>
    <body>
        <div id="news">اخبار :<span id ="ne"></span></div>
        <script>
            var spn = document.getElementById("ne");
            var str = "";
            var arr = ["بهترین ها در سایت ما","آموزش جاوا اسکریپت","مرجع کامل سی اس اس","اولین دوره شبکه"];
            var len = arr.length;
            var i =0,j=0,tim;
            lop();
            function lop() {
                if(arr[i]){
                     var myss = arr[i].split(""); 
                     tim = setInterval(function(){shw(myss)},100);
                }
            }
            function shw(st) {
                if(st[j] != undefined) {
                    str += st[j];
                    spn.innerHTML = str;
                    j+=1;
                }
                else {
                    clearInterval(tim);
                    i++;
                    lop();
                }        
            }
        </script>
    </body>
</html>

您似乎没有将 j 重置回 0

<html>
  <head>
    <meta charset="utf-8">
    <style>
      #news {
        height: 30px;
        background-color:rgba(0, 0, 255, 0.37);
        direction: rtl;
        line-height: 30px;

      }
    </style>
    <p id="x"></p>
    <p id="y"></p>
    <p id="z"></p>
    <p id="w"></p>
  </head>
  <body>
    <div id="news">اخبار :<span id ="ne"></span></div>
    <script>
      var spn = document.getElementById("ne");
      var str = "";
      var arr = ["بهترین ها در سایت ما","آموزش جاوا اسکریپت","مرجع کامل سی اس اس","اولین دوره شبکه"];
      var len = arr.length;
      var i =0,j=0,tim;
      lop(i);
      function lop(index) {
        if(arr[index]){
          var myss = arr[index].split(""); 
          tim = setInterval(function(){shw(myss)},100);
        }
      }
      function shw(st) {
        if(st[j] != undefined) {
          str += st[j];
          spn.innerHTML = str;
          j+=1;
        }
        else {
          clearInterval(tim);
          i++;
          j=0;
          lop(i);
        }        
      }
    </script>
  </body>
</html>

这是plunkr

我想出了解决办法:

var spn;
var str = "";
var arr = ["بهترین ها در سایت ما","آموزش جاوا اسکریپت","مرجع کامل سی اس اس","اولین دوره شبکه"];
var len = arr.length;
var i =0,tim;

window.onload = function() {
  spn = document.getElementById("ne");
  lop();
}

function lop() {
  arr = arr.join(' ').split("");
  if(arr.length > 0){
    tim = setInterval(function(){shw(arr)},100);
  }
}

function shw(st) {
  if(st[i] != undefined) {
    str += st[i];
    spn.innerHTML = str;
    i += 1;
  }
  else {
    clearInterval(tim);
  }
}
#news {
  height: 30px;
  background-color:rgba(0, 0, 255, 0.37);
  direction: rtl;
  line-height: 30px;

}
<div id="news">اخبار :<span id ="ne"></span></div>