我有一个名为myFunction
的函数,它是从DOM调用的。
我有jquery也初始化
<script>
$( document ).ready(function() {
function myFunction() {
window.open("survey.html");
}
$( "#begin" ).on("click", function() {
event.preventDefault();
console.log( "ready!" );
Materialize.toast('Be a friend!', 2000);
});
});
</script>
继承我的HTML
<section class="jumbotron">
<div class="container">
<div class="row">
<div class="col s8 desc">
<h1>Welcome to Friend Finder</h1>
<h3>Take our survey find your match.</h3>
<a href="" id="begin" class="btn-large waves-effect waves-light red" onclick="setTimeout(myFunction, 3000);">BEGIN SEARCH</a><br>
</div>
</div>
</section>
我的目标:当我点击标签时。 IT将调用函数myFunction和WAIT 3秒setTimeout将浏览器转移到下一页
window.open(survey.html).
答案 0 :(得分:3)
因为onclick
需要访问全局窗口空间中的函数。
但是您在$(document).ready
内声明了它,并且只能在该回调中访问,因为&#34;范围&#34; 。只需将其移到ready
function myFunction() {
window.open("survey.html");
}
$( document ).ready(function() {
$( "#begin" ).on("click", function() {
....
答案 1 :(得分:2)
在function myfunction()...
$(document).ready(function()...
function myFunction() {
window.open("survey.html");
}
$( document ).ready(function() {
$( "#begin" ).on("click", function() {
event.preventDefault();
console.log( "ready!" );
Materialize.toast('Be a friend!', 2000);
});
});
您的问题是myFunction
的范围是就绪函数。所以你无法在全球范围内访问它。
详细了解范围和闭包here。
答案 2 :(得分:0)
你确实意识到你可以使用不同类型的onClick
事件,对吧?在许多情况下,这甚至可能是一种更正确的方法,因为$(document).ready()
意味着所有这些功能只应在整个文档正确加载后开始工作,这在大多数情况下都是您想要的。因此,从底部开始比从顶部开始更正确。
$('#begin').click(function(){
myFunction();
});