我可以使用Javascript更改HTML元素的ID吗?

时间:2010-09-24 13:09:06

标签: javascript dom getelementbyid

我有javascript变量obj,它表示DOM中的一个元素,我希望更改其ID。我试图通过以下方式做到这一点,这也说明它不起作用!

obj.id = "newID";

alert(obj.id); // this gives me newID as required

var element = document.getElementById("newID");

if (element != null) { alert("Hooray"); // this alert never gets displayed! }

我上面的代码出了什么问题,这意味着id似乎已被更改但未在DOM中获取?非常感谢提前。

7 个答案:

答案 0 :(得分:5)

由于你没有给我们整个代码,我的猜测是你的代码中可能有类似的东西

obj = document.createElement("div");
obj.id = "something";

// ...

obj.id = "newID";

alert(obj.id); // this gives me newID as required

var element = document.getElementById("newID");

if (element != null) { alert("Hooray"); // this alert never gets displayed! }

在这种特殊情况下,document.getElementById("newID")不会返回任何内容,因为元素未添加到页面中,因此在页面中找不到它。

答案 1 :(得分:3)

没有理由不使用纯JavaScript。这是一个working fiddle,显示它正常工作。您不应该需要jQuery解决方案或任何其他JavaScript方法,id = "foo";是更改DOM对象ID的最简单方法。

看看我上面的小提琴,试着看看你的代码和我的代码之间有什么区别。

答案 2 :(得分:3)

您展示的代码确实有效;问题可能出在查找并分配obj的代码中。我的猜测是,这只是一个javascript对象,而不是DOM树的一部分。

答案 3 :(得分:1)

您的代码看起来很好,但如果您在代码中以这种方式发表评论,您可以意识到由于评论,大括号永远不会被关闭。

if (element != null) { alert("Hooray"); // this alert never gets displayed! } <-- this brace

答案 4 :(得分:0)

试试这个:

为我工作

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>test</title>
</head>
<body bgcolor="#ffffff">

    <script type="text/javascript">
        function ChangeID(elementId, newId) {
            var obj = document.getElementById(elementId);
            obj.id = newId;
        }

        function SetContent(elementId, content) {
            var obj = document.getElementById(elementId);
            obj.innerHTML = content;
        }
    </script>

    <div id="div1"></div>

    <a href="#" onclick="ChangeID('div1', 'div6');">ChangeID</a><br />
    <a href="#" onclick="SetContent('div6', 'this is the contents');">Set Contents</a>





</body>
</html>

答案 5 :(得分:0)

还有另外一件事要考虑。在DOM准备好之前,您是否尝试这样做?该元素已加载吗?如果您尝试更改树中没有DOM的元素,您将悄然失败。

答案 6 :(得分:-2)

是的,你可以,这是一个jquery的解决方案

$("#xxx").attr("id", "yyy");

getElementById("xxx").setAttribute("id", "yyy");