这是交易。我有index.php链接到它的标题中的内部JS文件。 index.php然后包含另一个.php文件,它输出:+ add file。 addFile()是在外部JS文件中定义的Javascript函数。
通过这样做没有任何反应,包含的php没有“看到”JS函数。在包含的PHP中封装JS使其全部工作。但我不想这样做。
有什么想法吗?
编辑:
这是源
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Archie</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="/screen.css" type="text/css" media="screen"/>
<script src="/lib/js/archie.js" type="text/javascript"></script>
</head>
<body>
...
...
//included php starts here
<form action="/lib/course.php" method="post">
<fieldset>
<div id="addFileLocation"></div>
<a href="#" onClick="addFile()">+ add file</a>
<input type="hidden" id="addFileCount" value="0"/>
</fieldset>
</form>
//ends here
...
...
</body>
</html>
和js:
<script type="text/javascript">
//Dynamically add form fields
//add file browser
function addFile() {
var location = document.getElementById('addFileLocation');
var num = document.getElementById('addFileCount');
var newnum = (document.getElementById('addFileCount').value -1)+ 2;
num.value = newnum;
var newname = 'addFile_'+newnum;
var newelement = document.createElement('input');
newelement.setAttribute('name',newname);
newelement.setAttribute('type','file');
location.appendChild(newelement);
}
</script>
答案 0 :(得分:1)
在调用函数时,浏览器可能没有“加载”该文件。这就是我使用jQuery的$(document).ready()函数的原因。如果你将addFile的调用包装在一个类似于jQuery的“document ready”的函数中(它只是等到浏览器下载整个文档来执行js代码),那么你的所有函数都应该存在。当你等到整个东西加载然后在浏览器的地址栏中手动调用该函数时会发生什么?
答案 1 :(得分:1)
查看代码示例后,可能你的href =“#”正在使onClick处理程序短路。如果您将锚更改为:
会发生什么 <a href="javascript:addFile();">+ add file</a>
答案 2 :(得分:0)
知道了。傻了,我忘了从外部js文件中删除<script></script>
对。感谢您的帮助Rich!