2

ボタンがあります

   <button onclick="DeletaItem('template','1234')" id="btn">Deletar_func</button>

そして機能

   function DeletaItem(tipo,id_cripto){
       alert(tipo+id_cripto);
       alert($(this).attr('id'));
   }

2 番目のアラートが定義されていないのはなぜですか?

4

2 に答える 2

4

2 番目のアラートは未定義です。これはボタンではなく、実際にはウィンドウオブジェクトを参照しているためです。

これを関数に送信するか、onclick を次のように変更する必要があります。

onclick="DeletaItem(this, 'template', '1234')"

また、関数を次のように変更します。

function DeletaItem(button, tipo, id_cripto) {
    alert(tipo + id_cripto);
    alert(button.id);
}

または onclick をそのままにして、関数内でthisの代わりにevent.targetを使用します。

function DeletaItem(tipo, id_cripto) {
    alert(tipo + id_cripto);
    alert(event.target.id);
}
于 2012-05-14T02:57:09.217 に答える
2

これを試して:

$('#btn').click(function(){
    alert(this.id);
});

また

 <button onclick="DeletaItem(this,'template','1234')" id="btn">Deletar_func</button>


function DeletaItem(obj,tipo,id_cripto){

   alert(tipo+id_cripto);
   alert($(obj).attr('id'));
   alert(obj.id);
   // alert(this); if uncomment this, you will see it is eqaul window object

}

onclick属性を使用して関数を呼び出すと、最初の関数のようなオブジェクトにはならないためthis、;を使用できません。これthisがウィンドウオブジェクトですが、最初のオブジェクトでは、jQueryオブジェクトが渡されます

于 2012-05-14T02:05:06.370 に答える