JavaScript函数无法执行,脚本可以正常继续

时间:2019-01-20 07:37:12

标签: javascript function

试图解决这个问题已经漫漫长夜。

我正在尝试加载一个小的文本文件,对其进行解析,然后使用该信息为用户提供视频选项。我在页面加载时执行此操作,但是我也会响应用户事件来执行此操作。在两种情况下,我都得到相同的结果。 load_playList函数不执行。

代码在下面。 window.load和selectVideo(X)例程是起点。在这两种情况下,都会忽略load_Playlist函数。

似乎load_playList从未执行。警报消息永远不会执行,但是脚本会像一切正常一样继续进行。好像我输入的函数名称错误,所以我这样做了,脚本失败了。因此,浏览器似乎看到了该功能,但忽略了它。

var videoList = [];
var videoTitles = [];
var videoCaptions = [];

/*
var videoList = [
    'videos/ZionParkParade.mp4', 
    'videos/Pointless2014.mp4'];
var videoTitles = [
    'The 50GT Zion Canyon Cruise',
    'The Tinyvette at Sonoma Raceway'];
var videoCaptions = ['Caption 1','Caption 2'];
*/

window.onload = function()
{
    alert(0);
    load_playList;      // Loads and parses a small text file.
    alert(1);
    load_video(0);      // Set up the first video to play.
    alert(2);
}

function load_playList()
{
    alert('load_playList');
    var listFile = ReadFile('videos/PlayList.txt');

    var playList = listFile.split('\n');

    var j = 0;
  for (i = 0; i < math.trunc(playList.length / 3); i++) 
    {
        videoList[i] = playList[j];
        videoTitles[i] = playList[j+1];
        videoCaptions[i] = playList[j+2];
        j++;
        j++;
        j++
    }
}

function selectVideo(X)
{
    alert(10);
    load_playList;      // Loads and parses a small text file.
    alert(11);
    load_video(Number(X));
    alert(12);
}

function FileRead(U) 
{
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        X=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        X=new ActiveXObject("Microsoft.XMLHTTP");
    }

  X.open('GET', U, false );
  X.setRequestHeader('Content-Type', 'text/html')
  X.send();
    return X.responseText;
}   

function load_video(N)
{
    var V = document.getElementById("video_player");
    V.pause();
    V.src = videoList[N];
    V.auto = false;
    V.type = "video/mp4";

    // Update the title and captions.
  document.getElementById('pause_button').innerHTML = "Play";
    document.getElementById('videoTitle').innerHTML = videoTitles[N];
    document.getElementById('videoCaption').innerHTML = videoCaptions[N];
}

如果我取消对初始变量声明的注释,请提供初始值,则所有工作都将正常进行,除非从未加载文本文件。

谢谢。

编辑-我在load_playList例程中发现了两个问题,但仍然无法运行该函数。我什至没有看到第一个警报。

我将load_playList代码粘贴到onload例程中,并且可以正常工作。我可以忍受,但是如果有任何意义的话就会让它感到生气。

window.onload = function()
{
//  load_playList;      // Loads and parses a small text file.

    var listFile = load_file('videos/PlayList.txt');
    var playList = listFile.split('\n');

    var j = 0;
  for (i = 0; i < Math.trunc(playList.length / 3); i++) 
    {
        videoList[i] = playList[j];
        videoTitles[i] = playList[j+1];
        videoCaptions[i] = playList[j+2];
        j++;
        j++;
        j++
    }

    load_video(0);      // Set up the first video to play.
    var vid = document.getElementById("video_player");
    vid.volume = 0.2;   
}

function load_playList()
{
alert(10);
    var listFile = load_file('videos/PlayList.txt');
alert(11);
    var playList = listFile.split('\n');

alert('Length = '+playList.length); 
alert('Count = '+Math.trunc(playList.length / 3));  

    var j = 0;
  for (i = 0; i < Math.trunc(playList.length / 3); i++) 
    {
        videoList[i] = playList[j];
        videoTitles[i] = playList[j+1];
        videoCaptions[i] = playList[j+2];
        j++;
        j++;
        j++
    }
alert(12);
}

2 个答案:

答案 0 :(得分:0)

在函数名称后仅包含()。仅调用名称将不会运行该函数。

load_playList();

Refer 另请参阅fiddle观看函数调用

答案 1 :(得分:0)

解决方法是将该例程的代码粘贴到onload例程中,但可以解决问题,但我对此并不满意,最终偶然发现了这种解决方案:

window.onload = function()
{
    load_playList(0);       // Loads and parses a small text file.
    load_dropdown(0);       // Populate the dropdown menu.
    load_video(0);          // Set up the first video to play.
    var vid = document.getElementById("video_player");
    vid.volume = 0.2;   
}

load_playList和load_dropdown都不需要传递参数给我,但是我还是这么做了,

我不确定为什么会这样,但我会接受。