1

从概念上讲,这似乎应该很简单,但每当我尝试实现它时,我总是发现自己处于第 22 阶段。(另外,出于各种原因,如果可能的话,我真的很想在没有 jQuery 或 AJAX 的情况下处理这个问题。)

在客户端,onload 触发播放视频和显示图片。然后,每次用户按下空格键时,都会播放不同的视频,直到空格键触发下一页加载的某个点。

在服务器端,PHP 数组控制将显示哪些视频和图片(包括页面内的顺序,以及哪组视频,总共 70 组)。

目前,所有客户端操作都由包含在我的 html 标头中的一组 JS 函数控制。所有 PHP 函数都列在我的主页脚本的底部。然而,更重要的是,JS 函数必须包含一些 PHP 引用。例如:

document.getElementById("ImagePort").innerHTML="<img src=Pictures/<? echo $_SESSION['TrialArray'][4] . ">"; ?>";

这里的问题不是语法。它是信息流序列。问题是,当这些 PHP 调用位于标头中时,它们会出现在浏览器到达我调用为它们分配值的 PHP 函数的部分之前。然后 PHP 会抛出错误消息,破坏 JS 解析。

因此,直观的解决方案是将这些 JS 函数向下移动(可能到页脚),或者在页眉加载之前调用 PHP 函数。但是,将它们移到页脚并没有解决我的问题。我有点认为它会......我的期望是错误的,还是我在某个地方犯了一个简单的错误?

将调用移动到 JS 函数定义之前同样有问题,因为脚本不知道 JS 函数是由 PHP 还是在 HTML 中调用的。

PHP 示例:playVid(source) 是一个 JS 函数,$Instructions 是一个 PHP 变量。

if ($_SESSION['Page'] == 0) {
            echo "<script>playVid(" . "'" . $Instructions . "'" . ");</script>";
        }

HTML 示例:setFocus() 和 ShowFirstStimulus() 都是 JS 函数。

<body onload="setFocus(); ShowFirstStimulus()">

这两个都会抛出“未捕获的引用错误:[函数]未定义。我再次试图弄清楚这是否是因为我根本不能这样做,或者我只是在我的方式上犯了一个错误已经设置好了。

假设真的没有办法摆脱这个 Catch-22(不能在 JS 函数之前调用 PHP 函数,并且不能在 PHP 函数之前调用 JS 函数),似乎剩下的一个选择就是简单地写一些虚拟代码,我在其中将一些 PHP 变量初始化为一些虚假但可解析的值。这似乎是糟糕的编码卫生,但在这一点上,我没有看到很多其他选择。有什么建议么?

如果我需要澄清任何事情,也请告诉我。谢谢!

4

0 回答 0