在HTML标记内调用javascript函数

eri*_*bae 16 html javascript

我有以下内容.

<a href="#" onclick="hello()">click me</a>
Run Code Online (Sandbox Code Playgroud)

我有一个Javascript文件

$(document).ready(function() {
  function hello() {
    alert('hi');
  }
});
Run Code Online (Sandbox Code Playgroud)

但是当我点击"点击我"时,警报没有被触发.它说"你好"没有定义.我删除document.ready,它的工作原理.

这是因为在整个文档准备好之前没有定义"hello",但是当渲染上面的"anchor"标记时,它找不到该函数?

有什么方法可以让这个工作吗?

  • 我必须通过丑陋的"onclick"从html标签调用javascript函数
  • 我需要将我的JS保存在document.ready中(我还需要其他部分)

Aza*_*ade 19

您还可以在Anchor Tag中使用HREF属性和javascript: keyword来调用JavaScript函数:

<a href="javascript:hello()">click me</a>
Run Code Online (Sandbox Code Playgroud)

  • 这是解决此问题的实际有趣且富有创意的解决方案. (2认同)

jfr*_*d00 17

您的hello()函数声明不在全局范围内,因此来自尝试在全局范围内调用它的HTML的调用无法找到它.您可以通过将hello()函数移动到全局范围来修复它:

function hello() {
    alert('hi');
}

$(document).ready(function() {
});
Run Code Online (Sandbox Code Playgroud)

或者在全球范围内宣布:

$(document).ready(function() {
  window.hello = function() {
    alert('hi');
  }
});
Run Code Online (Sandbox Code Playgroud)