代码之家  ›  专栏  ›  技术社区  ›  TimB

单击按钮上的事件似乎未触发

  •  -1
  • TimB  · 技术社区  · 7 年前

    我对HTML或JavaScript并不陌生,尽管我不经常使用它们。然而,我对PHP非常陌生,在尝试在嵌入PHP的HTML中的按钮上获取单击事件时,我目前面临一个奇怪的问题:

    <!DOCTYPE html>
    <html lang="de">
    
    <head>
      <title>Blah</title>
      <meta charset="utf-8">
    </head>
    
    <body>
      <button type="button" onclick="function() { alert('Moo!'); }">Some button</button>
    </body>
    
    </html>

    当我点击按钮时,什么也没有发生。是的,原稿中当然有更多的标记,但与我的问题无关。W3C标记验证服务表示没有错误,当我从body标记底部的脚本向moo发出警报时,它也可以正常工作。看起来点击事件没有触发。。。知道为什么吗?

    4 回复  |  直到 7 年前
        1
  •  3
  •   Stephen Kennedy    7 年前

    如果希望在单击时立即调用它,可以尝试重写按钮部分,如下所示:

    <button type="button" onclick="(function() { alert('Moo!'); })();">Some button</button>
    

    但我个人的偏好是将其写入一个命名函数,并将其作为处理程序调用。

        2
  •  3
  •   epascarello    7 年前

    这是因为您定义了一个函数而没有执行它。不要将其包装在函数中。

    onclick="alert('Moo!');"
    

    如果你把它包装成一个函数。你需要执行它。

    onclick="(function() { alert('Moo!'); })()"
    
        3
  •  1
  •   Jack Bashford    7 年前

    内联事件处理程序中不能有匿名函数-使用 alert("Moo")

    <!DOCTYPE html>
    <html lang="de">
    
    <head>
      <title>Blah</title>
      <meta charset="utf-8">
    </head>
    
    <body>
      <button type="button" onclick="alert('Moo!')">Some button</button>
    </body>
    
    </html>

    您还可以使用命名函数:

    function moo() {
      alert("Moo!");
    }
      
    <!DOCTYPE html>
    <html lang="de">
    
    <head>
      <title>Blah</title>
      <meta charset="utf-8">
    </head>
    
    <body>
      <button type="button" onclick="moo()">Some button</button>
    </body>
    
    </html>

    甚至是一种生活:

    <!DOCTYPE html>
    <html lang="de">
    
    <head>
      <title>Blah</title>
      <meta charset="utf-8">
    </head>
    
    <body>
      <button type="button" onclick="(function() { alert('Moo!'); })()">Some button</button>
    </body>
    
    </html>
        4
  •  1
  •   Vlad Levitskiy    7 年前

    您可以在中绑定操作 onclick 属性有3种方式:

    1. <button type="button" onclick="alert('Moo!');">Some button</button>
    2. 在JS代码中创建一个函数。 <button type="button" onclick="someFunc()">Some button</button>
    3. 使用 closures : <button type="button" onclick="(function() { alert('Moo!'); })()">Some button</button>