簡體   English   中英

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

[英]Can I change the ID of an HTML element using Javascript?

我有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中沒有被提取? 提前謝謝了。

既然你沒有給我們整個代碼,我的猜測是你的代碼中可能有類似的東西

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")將不會返回任何內容,因為元素未添加到頁面中,因此在頁面中找不到它。

沒有理由這不應該使用純JavaScript。 這是一個工作小提琴 ,顯示它的工作。 你不應該需要一個jQuery解決方案或任何其他JavaScript方法, id = "foo"; 是更改DOM對象ID的最簡單方法。

看看我上面的小提琴,試着看看你的代碼和我的代碼有什么區別。

你展示的代碼確實有用; 問題可能出在查找和分配obj的代碼中。 我的猜測是,這只是一個javascript對象,而不是DOM樹的一部分。

您的代碼看起來很好,但如果您在代碼中以這種方式進行評論,您可以意識到由於注釋,括號永遠不會關閉。

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

嘗試這個:

適合我

<!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>

還有另外一件事要考慮。 在DOM准備好之前,您是否嘗試這樣做? 該元素已加載嗎? 如果您嘗試更改DOM在樹中沒有的元素,您將悄然失敗。

是的,你可以,這是一個jquery的解決方案

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

要么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM