我知道这很傻但我觉得我最近几个小时都无法破解它。 我写信是为了理解这是如何工作的。 我有一个简单的js函数,我希望它保存在外部文件中,当我从.php文件调用它时它不起作用。
以下是设置: 我有4个独立的php文件,如register.php,dashboard.php,header.php,actions.php
我在我的script.js中定义了一些函数,如下面的
function fn1(){
alert("fn1");
}
function fn2(){
alert("fn2");
}
function fn3(){
alert("fn3");
}
现在,我在header.php中定义了将此脚本文件包含为
<!doctype html>
<html>
<head>
...
</head>
<body>
<script src='/js/script.js'></script>
</body>
...
我将此header.php包含在我的其他php文件中,如
<?php include('header.php'); ?>
<script language="javascript">
fn1();
</script>
这不起作用。它说..
SyntaxError:语法错误script.js:1
ReferenceError:fn1未定义dashboard.php
我设置并将它们分配到单独的文件中的方式有问题吗?
相同的功能,如果我在这些PHP文件中单独本地定义,它工作正常。 所以只有在从外部js脚本调用时才会出现问题。
请说明我做错了什么。
我之前写的一堆函数很好用,但我想首先理解这一点,以便我可以继续以相同的方式移动这些函数以保持它们的全局。
我想要实现什么?
我有基于视图/操作的PHP文件,如下所示。
login.php
register.php
dashboard.php
useraction.php
header.php
有几个div像我的导航栏,页脚,侧边栏,这些都是所有这些php的共同点; header.php具有所有必需的js函数,可根据各种条件和事件加载这些div;
我的计划是在我的所有php中包含header.php,以便在每个php文件中包含其中定义的所有函数,并且公共div是 由header.php本身加载。
有意义吗?这是实现这一目标的正确方法吗?如果没有,我该怎么办,请澄清。
所以按照这个计划,我试图制作一个简单的js函数,可以保存在外部js中,从这些不起作用的php中调用
答案 0 :(得分:0)
language
已弃用。您应该只使用<script>
标记。
问题在于你的第一行,你应该发布,发布的代码工作正常,我只是测试它。这可能是一个语法错误。
不过,你应该考虑将脚本加载到一个不同的php文件中,而不是那个负责设置标题和导航栏或者你有什么的文件。
修改强> 对不起,我说可能是语法错误,当它显然只是:
SyntaxError: syntax error script.js:1
删除&#39; script.js&#39;的第一行。它应该工作。
这让它对我有用:
的header.php
<!doctype html>
<html>
<head>
</head>
<body>
<script src='script.js'></script>
main.php
<?php include('header.php'); ?>
<script>
fn1();
</script>
的script.js
function fn1(){
alert("fn1");
}
function fn2(){
alert("fn2");
}
function fn3(){
alert("fn3");
}
编辑2:
突然间,这似乎更像是一个php问题
您的脚本可能应该加载到一个单独的php文件scripts.php中,您将其包含在特定php页面的底部,但是在打开<script>
标记之前,如果该页面上需要特定的js 。
这样可以加快页面加载速度。但是,您可以在标题部分中包含特定脚本,即使在文档的<head>
中也是如此,但您应该尝试保持这些脚本的轻量级,这样他们就不会对用户造成太大的延迟。<登记/>
你可以在任何地方加入php。例如,这可能是dashboard.php:
<?php include('header.php'); ?>
<div id="ImOnlyOnThisParticularPage"></div>
<!-- Footer loads scripts after the <footer> or divs that it contains -->
<?php include('footer.php'); ?>
<script>
var iOnlyDoSomethingInThisPage = function()
{
console.log("debug");
}
</script>
</body>
</html>
答案 1 :(得分:0)
@param LoL我复制了你的代码,并将其保存在单独的文件中,我按预期收到警报。如果你有问题打开你的控制台面板并尝试调试。按F12并检查控制台相关的错误,主要是你不要你的文件是正确的路径