【问题标题】:Why is my javascript function not being called in my div?为什么我的 div 中没有调用我的 javascript 函数?
【发布时间】:2014-03-15 10:53:16
【问题描述】:

我希望 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>

【问题讨论】:

  • 尝试将那些script标签放在div之上。
  • “在我的 div 中调用”是什么意思?函数与任何特定的 DOM 元素无关。
  • 我能看到的唯一问题 testFunction 在另一个脚本中声明之前在脚本块中调用
  • 它应该抛出一个错误说Uncaught ReferenceError: testFunction is not defined
  • 你在说 URL 中的#p3 吗? URL 中哈希的含义是滚动到该元素。

标签: javascript jquery html css function


【解决方案1】:

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

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

说你需要在顶部定义它的评论是不正确的,见这里:http://jsfiddle.net/xDf5e/

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

注意:您可以在我给您的示例中看到 onclick 也可以正常工作。

你有一个很好的关于函数提升的教程:http://elegantcode.com/2011/03/24/basic-javascript-part-12-function-hoisting/

【讨论】:

    【解决方案2】:

    使用前应先定义测试函数

     <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>
    

    【讨论】:

    • 那不是真的,看我的回答。如果您定义了一个变量,例如:var testFunction = function(...,那将是正确的。
    • 感谢您的评论。但我的解决方案也确实有效,因为我在发布之前测试过
    • 它确实有效,但它不能回答问题('为什么......?')。
    • 我解释了。根据原始问题,作者有 2 个不同的脚本块,并且 testfunction() 在一个脚本块中调用,然后在另一个块中声明。您的解决方案是正确的,因为您在一个脚本块中调用和定义函数。我认为我不应该投反对票。
    • 是的,这就是我的回答。抱歉,我没有看到你的解释。
    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2014-12-01
    • 2018-03-10
    • 2020-01-18
    • 1970-01-01
    相关资源
    最近更新 更多