2009-10-30 46 views
24

我正在使用JavaScript修改HTML div元素客户端的ID。以下代码在Internet Explorer中正常工作,但不在Firefox/2.0.0.20中。它可以在更新版本的Firefox中使用。如何使用JavaScript更改HTML元素的ID?

document.getElementById('one').id = 'two'; 

谁能告诉我:

  1. 为什么这不工作在Firefox。
  2. 如何使这个工作在FireFox。

为了澄清,我将更改元素ID以引用外部样式表中的不同样式。该样式适用于IE,但不适用于FF。

+2

测试应该在Firefox中找到工作 - 是什么让你觉得它不是? – Greg 2009-10-30 14:58:03

+1

这适用于我在Firefox中,你是否收到JavaScript错误?你能发表更多的代码示例吗? – 2009-10-30 14:58:17

+0

下载Firebug并查看控制台窗口中出现的错误 – 2009-10-30 15:00:17

回答

33

它可以在Firefox(,包括2.0.0.20)中工作。见http://jsbin.com/akili(添加/edit到url编辑):

<p id="one">One</p> 
<a href="#" onclick="document.getElementById('one').id = 'two'; return false">Link2</a> 

第一次单击更改id"two",第二次点击错误,因为与id="one"的元素现在无法找到!

也许你有另一个元素已经id="two"(FYI you can't have more than one element with the same id)。

+1

+1上传示例 – Seb 2009-10-30 15:00:03

7

这似乎为我工作:

<html> 
<head><style> 
#monkey {color:blue} 
#ape {color:purple} 
</style></head> 
<body> 
<span id="monkey" onclick="changeid()"> 
fruit 
</span> 
<script> 
function changeid() 
{ 
var e = document.getElementById("monkey"); 
e.id = "ape"; 
} 
</script> 
</body> 
</html> 

预期的行为是改变单词“果”的颜色。

当您调用例程时,您的文档可能没有完全加载?

+0

请参阅我最近的编辑。 – Tesseract 2009-10-30 15:10:20

3

您可以修改id,而不必使用getElementById

例子:

<div id = 'One' onclick = "One.id = 'Two'; return false;">One</div> 

你可以在这里看到:http://jsbin.com/elikaj/1/

使用Mozilla Firefox 22和谷歌Chrome 60.0