3

コードを Google Chrome でテストすると問題が発生し、Firefox でテストしても問題はありません。onblur関数があり、イベントで呼び出します。Firefox では問題なく動作していますが、Google Chrome ではコンソールにこのエラーが表示されました

Uncaught ReferenceError: 塗りつぶしが定義されていません

HTML コード:

<input type="text" name="title" id="title" placeholder="mytitle" onblur='fill(this);'>

JavaScript コード:

function fill(element,value = false){
    if(element.value == ""){
        $("#"+element.id).css('border-color','red');
    }else{
        $("#"+element.id).css('border-color','#56de56');
    }
    if(value == true){
        if(element.value > 75 || element.value < 5)
            $("#"+element.id).css('border-color','red');
    }
}

fillその行の前とその行の後に関数を宣言したので、同じ問題に直面しています。

4

1 に答える 1

3

バージョン 5.1 の時点でベースとなっている標準 JS である EcmaScript は、オプションのパラメーターをサポートしていません。

function fill(element,value = false){

あなたが期待することをしません。代わりに、これを手動で行う必要があります。

function fill(element,value){
     if(typeof value === 'undefined') {
          value = false;
     }

または、ブール値のみを期待している場合は、より短い概念で

function fill(element,value){
    value = value || false;

注 - これらはどちらも見逃すケースがあります - Fabrício Matté がコメントで示唆したように、引数を渡さずに明示的arguments.lengthに取得するかどうかを確認することもできますが、それはめったにありません。undefined

オプションのパラメーターは EcmaScript 6 提案にありますが

(ただし、Firefox は現在でも独自にサポートしています)

于 2013-08-16T18:51:34.207 に答える