为什么setInterval只执行了一次

当if为false时执行else后函数不再继续执行,是什么问题呢


function srconload() {
    var srcload = setInterval(srcok, 500)
    function srcok() {
      if (document.getElementById('mp4').src) {
        console.log("src已存在,停止监听");
        var mp4url = document.getElementById('player_one_html5_api').src
        clearInterval(srcload)
        console.log(mp4url);
        console.log(mp4url.indexOf('.mp4') > -1);
        mp4url.indexOf('.mp4') > -1 && b()
      } else {
        console.log("src不存在,继续监听");
      }
    }
  }

src存在停止监听,没毛病啊。还是你逻辑不对。
clearInterval(srcload)方法应该写在else中?

function srconload() {
    var srcload = setInterval(srcok, 500)
    function srcok() {
      if (document.getElementById('mp4').src) {
        console.log("src已存在,停止监听");
        var mp4url = document.getElementById('player_one_html5_api').src
        console.log(mp4url);
        console.log(mp4url.indexOf('.mp4') > -1);
        mp4url.indexOf('.mp4') > -1 && b()
      } else {
        clearInterval(srcload)
        console.log("src不存在,继续监听");
      }
    }
  }

if 你把这个函数清掉了,else照常执行,代码看着没什么问题

我把你代码拿出来执行了一下,是没有问题的;你尝试在你那边把 document.getElementById('mp4').src 打印一下看看有没有值;怕是走进了true,停止了定时器

代码中加document.getElementById('mp4').src打印,你就知道为啥了

你的srconload()执行了吗,是不是忘记执行了,执行了应该没有问题