为什么在我的div中没有调用我的javascript函数?

为什么在我的div中没有调用我的javascript函数?,javascript,jquery,html,css,function,Javascript,Jquery,Html,Css,Function,我希望div只调用一个函数(不移动我在页面上的位置),而不是调用我的JavaScript函数——它移动我在页面上的位置 我做错了什么?(在joomla内部运行) 为什么在我的div中没有调用我的JavaScript函数 http://....com/test.php#p3 <div id="p1" onclick="testFunction()"> </div> <div id="p3">Some content</div> <scr

我希望div只调用一个函数(不移动我在页面上的位置),而不是调用我的JavaScript函数——它移动我在页面上的位置

我做错了什么?(在joomla内部运行)

为什么在我的div中没有调用我的JavaScript函数

http://....com/test.php#p3


<div id="p1" onclick="testFunction()"> 
</div>

<div id="p3">Some content</div>
<script type="text/javascript">
   testFunction();
</script>
</div>


<script type="text/javascript">


function testFunction() {
   alert("Test");
}
</script>
http://....com/test.php#p3
一些内容
testFunction();
函数testFunction(){
警报(“测试”);
}

使用前应先定义Testfunction

 <script type="text/javascript">
     function testFunction() {
        alert("Test");
  }
 </script>
 <div id="p1" onclick="testFunction()"> 
 </div>
 <div id="p3">Some content</div>
 <script type="text/javascript">
   testFunction();
 </script>
 </div>

函数testFunction(){
警报(“测试”);
}
一些内容
testFunction();

这是因为您有两个单独的脚本块,第一个脚本块调用第二个脚本块中定义的函数。把它们放在一个单独的块中,它就会工作

<div id="p1" onclick="testFunction()">click me</div>
<div id="p3">Some content</div>
<script type="text/javascript">
testFunction();
function testFunction() {
    alert("Test");
}
</script>
点击我
一些内容
testFunction();
函数testFunction(){
警报(“测试”);
}
表示需要在顶部定义的注释不正确,请参见此处:

如果您定义了一个变量函数,如:
var testFunction=function(…
),则它们是正确的。通常,您应该在JS块的顶部定义函数,这会使代码更可读和可维护,但这不是脚本无法工作的原因

注意:在我给您的示例中,您可以看到onclick也可以很好地工作


关于函数提升,这里有一个很好的教程:

试着把那些
script
标记放在
div
上面。你说的“在我的div中调用”是什么意思?函数与任何特定的DOM元素都不相关。我能看到的唯一问题是在脚本块中调用
testFunction
,然后在另一个脚本中声明它。它应该抛出一个错误,说
Uncaught ReferenceError:testFunction未定义
您在URL中谈论的是
#p3
URL中的是滚动到该元素。这不是真的,请参阅我的答案。如果您定义了一个变量,如:
var testFunction=function(…
),则是真的。感谢您的评论。但是我的解决方案也可以工作,当然,我在postedIt工作之前测试过,但它没有回答问题(“为什么…?”)根据最初的问题,作者有两个不同的脚本块和testfunction()在一个脚本块中调用,然后在另一个脚本块中声明。您的解决方案是正确的,因为您在一个脚本块中调用并定义了函数。我认为我不应该投反对票。是的,我的答案是这样说的。抱歉,我没有看到您的解释。