2

こんにちは、javascript は初めてなので、お手柔らかにお願いします。私の呼び出しにphpを混ぜて、少し問題があります。onclick イベントで呼び出される関数名を変更する必要があります。

<div class=\"span4\" id=\"pass\">
    <button class=\"btn btn-block btn-large btn-warning\" id=\"bypass\" disabled onclick=\"pass(); return false;\">
        - 
    </button>
</div>

上記は std 呼び出しを含む div です。この時点の前に、別の関数呼び出しからいくつかの変数が設定されているため、上記の呼び出しを「pinpass2() または pinpass3 などに変更する必要があります。

function pincheck(id,type,lastid,pin){
    document.getElementById('fade').style.display=\"block\";
    document.getElementById('calc').style.display=\"block\";  
    var staffid = id;
    document.getElementById('bypass').onclick = function (){\"pinpass\"+staffid(); 
    return false;
};
}

上記はそれを行うべき機能ですが、私はそれを機能させることができないようです。どんな助けでも感謝します。ps pincheck 関数に以下を含めると、目的のスタッフ ID が表示されます

alert(\"staff id\"+staffid);
4

4 に答える 4

1
document.getElementById('bypass').onclick = pinpass2;

それはうまくいくはずです。はすでに関数なので、他のオブジェクトと同じようpinpass2に割り当てることができます (はい、関数は Javascript のオブジェクトです)。必要なときにonclick変更するだけです。onclick

の結果の変化を検出できない場合はstaffid()、代わりにスイッチを使用する必要があります。

document.getElementById('bypass').onclick = function() {
    switch(staffid()) {
        case 1: pinpass(); break;
        case 2: pinpass2(); break;
        default: pinpass3(); break;
    }
};

ただし、ほとんどの場合、これを行う必要はありません。また、staffid が関数なのか変数なのかわかりませんが、何も変わりません。

ところで、このハンドラーのアタッチ方法はかなり古いものです。より強力なものがあります:

document.getElementById('bypass').addEventListener('click', pinpass2, false);

これにより、複数の関数をアタッチできます。削除するには:

document.getElementById('bypass').removeEventListener('click', pinpass2, false);
于 2013-08-09T00:02:26.523 に答える
0

私はあなたの質問から 100% ではありませんが、staffid 変数に基づいて別の関数を呼び出そうとしているようです。IE2を呼び出す場合はpinpass2().

これがグローバル関数である場合は、呼び出すことができ、必要な関数が呼び出さwindow[ 'pinpass' + staffid ]()れます (存在する場合)。

例: if staffid = 2thenwindow[ 'pinpass' + staffid ]()は which とwindow[ 'pinpass2' ]()同等であり、 の呼び出しと同じpinpass2()です。

これは、すべてのグローバル変数 (関数を含む) がwindowオブジェクトのプロパティであり、動的に生成された名前と角括弧表記を使用してプロパティにアクセスできるためです。

于 2013-08-09T00:06:01.433 に答える
0

JavaScript関数はファーストクラスであるため、文字通りpincheck、このような別の変数に割り当てることができます。

var pinpass2 = pincheck;

今でもこのように呼び出すことができます

pinpass(1,2,3,4);

于 2013-08-08T23:57:06.393 に答える
0

属性を変更するのと同じ方法で onclick 属性を変更できますか?

var elem = document.getElementById('bypass');

elem.setAttribute('onclick', 'pinpass' + staffid + '(); return false;');

フィドル

于 2013-08-08T23:59:01.227 に答える