2

テキストエリアがあります。クリックすると、テキストをクリアします。

<textarea id="cow" rows="5" name="message" cols="50" onfocus="clear()" >Please provide a link to an image no wider than 500px. </textarea>

および外部jsファイルからのjavascript:

var cow=document.getElementById("cow").value;
function clear(){ document.getElementById("cow").value=' '; }

おそらくJqueryを使用できると思いますが、JavaScriptを学習しようとしているだけです。

4

2 に答える 2

4

信じられないかもしれませんが、関数に名前を付けたことを除けば、コードは問題ありませんclear

一部のブラウザでは、インラインイベントハンドラー内で、documentオブジェクトがイベントハンドラーのスコープチェーンに接続されています。これには、関数ではなく、を参照するという不幸な影響があります。この動作は標準化されていないため、使用するブラウザによっては、異なる結果が表示される場合があります。cleardocument.clear

関数の名前を変更すると、正常に機能します:http : //jsfiddle.net/QqMsX/


「Javascriptの予約語は「明確」ですか? 」を必ずお読みください。このような状況を回避する方法についても説明しました。

于 2013-02-13T21:32:50.680 に答える
2

document.clear作成したclear関数ではなく、ブラウザが呼び出そうとしているようです。関数の名前をに変更すると、正常に機能しclearTextますhttp://jsfiddle.net/7meL7/

この問題を回避する良い方法は、属性でJSを完全に回避することです。

<textarea id="cow" rows="5" name="message" cols="50">Please provide a link to an image no wider than 500px. </textarea>

// There are better ways, but this is the simplest crossbrowser way
document.getElementById("cow").onfocus = function() {
    this.value = '';
}
于 2013-02-13T21:33:16.137 に答える