Javascript jQuery:$(this).attr(';id';)找不到元素的id-未定义

Javascript jQuery:$(this).attr(';id';)找不到元素的id-未定义,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试获取id,只是在单击时提醒它,尽管is只是“未定义”。。。 你能帮我吗? 重要代码: HTML: jQuery: function alertme() { alert($(this).attr('id')); } 你能看到问题吗?我不能。。。 我的错: 很抱歉,我想简化代码,但我没有意识到我使用了“alert()”作为自定义函数的名称 要解决的第一个问题是函数名,我怀疑它与实际代码中的函数名不同,因为如果不是这样的话,您就不会有这么多 您使用了一个老式的“onclick”属性将函数

我正在尝试获取id,只是在单击时提醒它,尽管is只是“未定义”。。。 你能帮我吗? 重要代码: HTML:

jQuery:

function alertme() {
alert($(this).attr('id'));
}
你能看到问题吗?我不能。。。 我的错:
很抱歉,我想简化代码,但我没有意识到我使用了“alert()”作为自定义函数的名称

要解决的第一个问题是函数名,我怀疑它与实际代码中的函数名不同,因为如果不是这样的话,您就不会有这么多

您使用了一个老式的“onclick”属性将函数与元素关联起来。没有任何东西可以保证
这个
会像您期望的那样绑定到元素。您可以更改元素:

最好使用jQuery绑定处理程序:

$("#1").on("click", function() {
  alert(this.id);
});
正如其他人所说,问题在于
this
关键字的上下文

这个
引用了调用本身中的DOM元素(正如您所认为的那样),但是一旦调用了
alertme()
它就没有在其范围内定义。 要查看它,您可以查看以下JS:

function alertme(){
    alert($(this).attr('id'));
    console.log(this);
}
这个HTML标记:

<img src="/pictures/picture.jpg" class="r-gal-photo" id='abc' onclick="console.log(this); alertme()" />
它将和您的alertme()一起工作



或者您可以将
传递到
alertme
中,如下所示:

function alertme(elem){
    alert($(elem).attr('id'));
}
HTML:




资料来源:


为什么不使用jQuery绑定事件处理程序?另外,您正在递归调用警报函数
这个.id
可以用吗?或者我们必须使用
$(this).attr(id)
?我不能使用它。。。在我的实际代码中,有许多对象的函数相同,但括号中的代码不同,每个对象都有不同的id。因此,我将此代码用作我自己想要使用的脚本的示例,而不是实际代码。因为这也有同样的问题,而且更容易。无论如何我很抱歉没有看到我使用“警报”作为自定义函数的名称…我不能在写sereval times评论时使用它。真正的代码(这是一个简化的例子)在括号中有不同的文本,所以我不能在括号中写“elem”或者你在这里写的东西。我需要让它在不使用括号内编码的情况下提醒自己的id。因为括号里充满了不同的东西。我想让它提醒id只是为了知道它找到了它的id,而不是“未定义”。@AdamOpalecký请解释-我不理解你所说的“括号中的不同代码”是什么意思-哪些括号和在哪里?尖括号/圆括号/花括号?(如果在alertme的定义或调用中为round?)它适用于每个元素,而不改变JS。将
添加到HTML中,当您单击按钮时,它将提示“bbb”,但如果您单击图像,它将提示“abc”。请解释为什么这不够笼统?为什么“alertme(this)”有问题,而“alertme()”没有问题?我刚刚添加了另一个(更好的)修复程序,这是我刚刚通过@JefréN了解到的。
function alertme(elem){
    alert($(elem).attr('id'));
}
<img src="/pictures/picture.jpg" class="r-gal-photo" id='abc' onclick="alertme(this)" />