2

我有一个按钮

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

和功能

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

为什么第二个警报未定义?

4

2 回答 2

4

第二个警报是未定义的,因为不是指按钮,它实际上指的是窗口对象。

您需要将其发送函数,将 onclick 更改为以下内容:

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

并更改功能如下:

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

或将 onclick 保持原样并在函数中使用event.target而不是this

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是 window objectm 但在第一个中,将传递 jQuery 对象

于 2012-05-14T02:05:06.370 回答