0

入力フォームにテキストをグレー表示できるようにするコードをいくつか書きました。ユーザーがそれにフォーカスすると、テキストが消えてグレー表示されなくなります。

function editableAlt (elem, colour1, colour2) {
    var elem = document.getElementById(elem);
    elem.onfocus = function () {
        if(this.value == this.defaultValue) {
            this.value = ""; // remove the default text, so the user can enter their own
            this.style.color = "#" + colour1; // change the text colour 
        }
    };
    elem.onblur = function () {
        if(this.value == '') {
            this.value = this.defaultValue; // user left it blank? revert back to the default text
            this.style.color = "#" + colour2; // and change the colour back too
        }
    }
}

これはほとんどのページで機能しますが、何らかの理由で onfocus と onblur がまったく機能しないページがあります。たとえば、onclick に変更しても問題は発生しません。

他に試せることはありますか?:(私はJQueryを使用していますが、それを削除してもまったく影響がないようです。

乾杯

4

2 に答える 2

3

javascript エラーに関しては、IE は非常に容赦がないことがわかりました。コードを jslint で実行したところ、次のエラーが発生しました。


エラー: 行 2 文字 14 の問題: 'elem' は既に定義されています。

var elem = document.getElementById(elem);

行 10 文字 23 の問題: 「===」を使用して「」と比較します。

if(this.value == '') {

行 14 文字 6 の問題: セミコロンがありません。

}

暗黙のグローバル: ドキュメント 2


あなたや何かを助けることをけちるつもりはありませんが、これらのエラーを修正すれば、より望ましい結果が得られると思います. 幸運を!

于 2009-09-25T14:55:14.917 に答える
0

なんてばか、ごめんなさいみんな!他のすべての Javascript ファイルを削除しようとしましたが、最も重要なファイルが PHP と IE の if ステートメントでラップされていたことを見逃していました。

Suckerfish sfFocus が適用されていたため、壊れていました: http://htmldog.com/articles/suckerfish/shoal/

申し訳ありません:(&提案に感謝します

于 2009-09-28T14:33:03.557 に答える