2016-04-12 15 views
7
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <script src="https://code.jquery.com/jquery-2.2.3.min.js"></script> 
</head> 
<body> 

<button type="button" onclick="submit();">launch</button> 
<button type="button" onclick="clear();">clear</button> 


<div> 
    Result:<br> 
    <div id="result"> 
    </div> 
</div> 
<script> 
    function clear() { 
     $('#result').empty() 
    } 

    function submit() { 
     $('#result').append('<div>xxxxx</div>') 
    } 
</script> 
</body> 
</html> 

Launchボタンは正常に機能しますが、clearは機能しません。コンソールで$('#result').empty()を実行すると、期待どおりにdivがクリアされます。なぜ私のjQueryが空でないのですか?

jsfiddleでコードをデバッグすることがあります。

+1

私はあなたのフィドルをチェックアウトしました..それは全く奇妙です。私はconsole.logをclear()でスタックし、呼び出されることはありません。 – mjohnsonengr

+2

関数 'clear()'の名前を他のものに変更します。それはうまくいくでしょう。 – Jer

+3

'clear'は予約語で、別の名前に変更します – rorypicko

答えて

11

インラインハンドラでclear()を呼び出すと、実際にはdocument.clear()という別のものが呼び出されているため、関数が呼び出されることはありません。インラインハンドラで、documentwindow前の範囲内にあり、あなたのclear機能はブラウザのwindowでグローバルスコープであるため、

です。

あなたはまた、私はインラインハンドラを避け、また、グローバルスコープを汚染避けることを好むだろう何か他

<button type="button" onclick="myClear();">clear</button> 

function myClear() { 
    $('#result').empty() 
} 

に関数名を変更することができます。

$(function(){ 
    function clear() { 
     $('#result').empty(); 
    } 

    $('.clear').click(function(){ 
     clear(); 
    }); 
}); 
+0

'window.clear'は、グローバルオブジェクトがドキュメントではなくウィンドウであるため、想定通り動作する場合に呼び出されなければなりません。 –

+0

私は同意する、https://jsfiddle.net/oe7huw4q/16/ –

0

ちょうど

$('.textboxElement').val("");

の代わりに、明確なを使用して設定します。なぜあなたの明確さが機能していないのか分かりませんが、これは別の方法です。あなたのメソッド名が取得されている可能性がありますか? )(あなたの.emptyのように思える何か他のもの

+0

'。val() 'はフォーム要素でのみ動作し、除算器やフォーム要素以外の静的要素では動作しません。 – Jer

+0

@ C0dekid.php私はそれがテキストボックスで完全に停止することを期待していたでしょう... – RhysO

+1

@Anonymouseはい、テキストボックスではなく、プレーンテキストで動作します。 'val()'は入力/テキストボックスに書かれた 'value 'を意味します。 – Jer

1

clearに名前を付けることは予約語で試してみてください取り組んでいます。ここの問題は明らかです()関数が呼び出されていません。 clear()をclear1()に変更しようとしましたが、うまくいきました。

1

に名前を変更し、「foo」で

2

明らかにインラインHTMLコールであると考えられるスコープ内にあるdocument.clear()という関数が呼び出されているからです。

あなたの機能を他のものにリネームしようとします。

0

問題は機能名です。 "Clear"はすでにdocument.clearとして定義されているので、コードには当てられません。関数の名前をclearContentのように変更します。

関連する問題