Javascript 使用jquery更改属性时出现问题

Javascript 使用jquery更改属性时出现问题,javascript,jquery,Javascript,Jquery,我在更改id的属性时遇到问题,似乎无法找出我做错了什么。我想这对我也是个新手也没什么帮助 我有一个函数,用于测试以确保从动态创建的表单行中提取正确的id。事情是这样的: myFunction() { var id = $(id).attr("id"); alert("This is my id " + id); } 这样做没有问题,当我单击指定的提醒我id的按钮时,它将给出表单中动态行的id。现在的问题是,当我尝试使用以下内容更改id时: changeId() { var newI

我在更改id的属性时遇到问题,似乎无法找出我做错了什么。我想这对我也是个新手也没什么帮助

我有一个函数,用于测试以确保从动态创建的表单行中提取正确的id。事情是这样的:

myFunction() {
  var id = $(id).attr("id");
  alert("This is my id " + id);
}
这样做没有问题,当我单击指定的提醒我id的按钮时,它将给出表单中动态行的id。现在的问题是,当我尝试使用以下内容更改id时:

changeId() {
  var newId = $(id).attr("id", "x");
  alert("This is my new id " + newId);
}

在这种情况下,它会提醒说“这是我的新id[对象]”,而不是给我新id。有什么建议吗?我非常感谢您提供的任何帮助。

您正在设置,但没有得到。当您使用
.attr
设置属性时,会返回jQuery对象,而不是您设置的值。尝试:

changeId() {
  $(id).attr("id", "x");
  var id = $(id).attr("id");
  alert("This is my new id " + newId);
}
再次返回jQuery对象(这样您可以保持链接),如果您想要分配的ID,您需要执行以下操作:

changeId() {
  var newId = $(id).attr("id", "x").attr("id");
  alert("This is my new id " + newId);
}
虽然直达路线要好得多,例如:

changeId() {
  var newId = "x"
  $(id).attr("id", newId);
  alert("This is my new id " + newId);
}
attr(名称、值)
返回jQuery对象。这是为了支持jQuery方法链接

你想要

changeId() {
  // ------------------------------v method chaining!
  var newId = $(id).attr("id", "x").attr("id");
  alert("This is my new id " + newId);
}
或者干脆

changeId() {
  $(id).attr("id", "x");
  alert("This is my new id " + id.id);
}
也许您还可以找到一个比运行
.attr()
并使用一个参数返回属性值的
id
更好的变量名称

使用两个参数运行
.attr()
,返回调用它的jQuery对象


文档:

attr
用于设置属性时,返回原始jQuery对象,而不是新的属性值。

只需更改DOM节点的
id
属性即可。适用于所有浏览器,非常简单:

var el = document.getElementById("your_id");
el.id = "new_id";
alert(el.id);

这些例子似乎不完整。它们缺少
函数
关键字,变量
id
未定义。这也是+1。你花了最大的努力去写,甚至还拿到了链接,但仍然只差3秒就拿到了第一名:-)尼克,你为什么要在你修订的
changeId()中捕获
newId
?这对我来说更有意义:
changeId(){var newId='x';$(id).attr('id',newId);alert('This is my newId'+newId);}
感谢Nick和所有回答的人,这正是我需要做的!