所以我在.jsp文件中检查了我的脚本标签:
<script type="text/javascript" src="javascript/jquery-1.3.1.min.js"></script>
<script language="JavaScript" > "some content here ...." </script>
以及同一个.jsp文件中的下面我有一个标记:
<body BGCOLOR="white" text="black" link="blue" vlink="red" onLoad="functionName();enableBackButton();">
但是,在我的JavaScript文件中,我有:
$(document).ready(function(){
$('current').click(function(event){
function functionName() { ....... }
我在Chrome控制台中不断收到错误消息:
未捕获的ReferenceError:未定义functionName
答案 0 :(得分:4)
将functionName()
移出$(document).ready(function(){
function functionName() { ....... }
$(document).ready(function(){
$('.current').click(function(event){
functionName();
});
});
此外,您需要使用.
按类定位元素,或#
按id
因此$('.current')
会选择class="current"
的任何元素,而$('#current')
会选择id="current"
最后一点是更新您的jQuery版本,因为1.3.1
已经过时了,并且缺少许多有用且重要的功能,这些功能在以后的版本中都有支持。
答案 1 :(得分:3)
不要将您的函数包装在DOM ready($(document).ready(function(){)
处理程序中。因为它是一个匿名函数,所以functionName()
函数有local scope
。所以你不能在DOM ready
之外调用它}
阅读What is the scope of variables in JavaScript?
答案 2 :(得分:2)
function functionName() {
应在$(document).ready(function(){
之外定义,例如
function functionName() {...}
$(document).ready(function(){...});
如果你在document.ready
内定义它,那么它的范围将限制在这个函数中。
只有您可以在functionName()
从$(document).ready(
内部调用
$(document).ready(function(){
function functionName() {...}
// but in your case below function
// is calling from body when its loaded
functionName(); //from here you can call
}
);
答案 3 :(得分:2)
在onLoad中调用functionName时,该函数尚未出现在文档中。 尝试将函数functionName输出。 例如,
<script language="JavaScript" >
"some content here ...."
function functionName() {
your function
}
</script>
答案 4 :(得分:2)
移动函数将是修复它的一种方法,但另一种方法是简单地从“就绪”处理程序调用该函数,或者如果从“加载”处理程序加载所有页面内容真的很重要:< / p>
$(document).ready(function() {
function functionName() {
// whatever
}
functionName();
});
不必要地污染全局命名空间通常是件坏事。