Saya memiliki yang berikut ini.
<a href="#" onclick="hello()">click me</a>
Dan saya memiliki file Javascript
$(document).ready(function() {
function hello() {
alert('hi');
}
});
Tetapi ketika saya mengklik "click me", peringatan tidak ditembakkan. Dikatakan "hello" tidak didefinisikan. Saya menghapus document.ready, dan berhasil.
Apakah ini karena "hello" tidak didefinisikan sampai seluruh dokumen siap, tetapi ketika tag "anchor" di atas sedang dirender, itu tidak dapat menemukan fungsinya?
Apakah ada cara lain yang bisa saya lakukan agar ini bisa berfungsi?
Deklarasi fungsi hello()
Anda tidak berada di lingkup global sehingga panggilan dari HTML yang mencoba memanggilnya di lingkup global tidak dapat menemukannya. Anda dapat memperbaikinya dengan memindahkan fungsi hello()
Anda ke dalam lingkup global:
function hello() {
alert('hi');
}
$(document).ready(function() {
});
atau dengan mendeklarasikannya di lingkup global:
$(document).ready(function() {
window.hello = function() {
alert('hi');
}
});
<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>