我有以下内容。
<a href="#" onclick="hello()">click me</a>
我有一个Javascript文件
$(document).ready(function() {
function hello() {
alert('hi');
}
});
但是当我点击“点击我”时,警报没有被触发。它说“你好”没有定义。我删除document.ready,它的工作原理。
这是因为在整个文档准备好之前没有定义“hello”,但是当渲染上面的“anchor”标签时,它找不到该函数吗?
有什么方法可以让它发挥作用吗?
答案 0 :(得分:17)
您的hello()
函数声明不在全局范围内,因此来自尝试在全局范围内调用它的HTML的调用无法找到它。您可以通过将hello()
函数移动到全局范围来修复它:
function hello() {
alert('hi');
}
$(document).ready(function() {
});
或在全球范围内宣布:
$(document).ready(function() {
window.hello = function() {
alert('hi');
}
});
答案 1 :(得分:17)
您还可以在Anchor Tag中使用 HREF 属性与 javascript:关键字来调用JavaScript函数:
<a href="javascript:hello()">click me</a>
答案 2 :(得分:2)
<a href="#" id="say_hello">click me</a>
<script type="text/javascript">
$(document).ready(function() {
$('#say_hello').click(function() {
hello();
});
});
function hello() {
alert('hi');
}
</script>
答案 3 :(得分:1)
hello未定义的原因是因为Hello()仅存在于DomReady回调的上下文中。您需要在全局上下文中定义Hello()。