1

作業中のjavascipt関数で問題が発生しています。

これが私がこの関数でやろうとしていることです:

指定された値を持つテーブル要素があり、それをクリックすると、その要素の値を持つINPUT要素をappendChildすることになっているjavasript関数が呼び出されるため、ユーザーはその値を変更できます。INPUT要素がonblur()イベント中に関数を呼び出すようにしたいので、変更された値をテーブル要素に再度表示できます。

onblur()私の問題は、要素がイベントを尊重しないことです。この関数は、Input要素が作成された直後に実行され、onblur()イベントになるのを待ちません。

2つの関数のコードは次のとおりです。

var elemento = true;

function prueba(clave,cantidad) {
    if(elemento){
        var percent = document.getElementById('porciento' + clave);
        percent.innerHTML = "";
        var input = document.createElement("input");
        input.setAttribute('type','text');
        input.setAttribute('size','5');
        input.setAttribute('value',cantidad);
        input.setAttribute('id','child'+clave);
        percent.appendChild(input);
        input.focus();
        child = document.getElementById("child" + clave);
        child.onblur = blurPrueba();
    }
}
function blurPrueba() {
    if(elemento)
        alert("Hello");
}

アラートはonblur()ではなく表示されます

なぜこれが起こっているのか誰かが知っていますか?

4

2 に答える 2

4

問題は次のとおりです。すぐchild.onblur = blurPrueba()に実行します。blurPrueba参照する必要があります:child.onblur = blurPrueba

行を変更して、ブラウザに「子要素のぼかしで、blurPrueba関数をアクティブにします」と伝えます。

関数blurPrueba()をアクティブにしてその結果をぼかしイベントに割り当てると、blurPrueba()何も返されません。したがって、あなたの行は実際には次のように言っています: " onblur = undefined"

要約すると、ブラウザでイベントを処理する場合 (こちら) 、ハンドラー関数への参照blurを提供する必要があります (こちら)。blurPrueba

于 2012-01-09T19:27:32.430 に答える
1

変化する

child.onblur = blurPrueba();

child.onblur = function(){blurPrueba()};

于 2012-01-09T20:04:50.683 に答える