「return false」が機能しない理由は?
importance: 3
以下のコードで「return false」が機能しない理由は?
<script>
function handler() {
alert( "..." );
return false;
}
</script>
<a href="https://w3.org" onclick="handler()">the browser will go to w3.org</a>
ブラウザはクリック時に URL に従いますが、私たちはそう望んでいません。
修正方法は?
ブラウザが "onclick" などの "on*" 属性を読み込むと、その内容からハンドラを作成します。
"onclick="handler()" に対して関数は
function(event) {
handler() // the content of onclick
}
ここで "handler()" で返される値は使用されず、結果には影響しないことがわかります。
修正は簡単です
<script>
function handler() {
alert("...");
return false;
}
</script>
<a href="https://w3.org" onclick="return handler()">w3.org</a>
また、次のように "event.preventDefault()" を使用することもできます。
<script>
function handler(event) {
alert("...");
event.preventDefault();
}
</script>
<a href="https://w3.org" onclick="handler(event)">w3.org</a>