Posso modificare l’ID di un elemento HTML con Javascript?

Ho variabile javascript obj che rappresenta un elemento nel DOM e vorrei cambiare il suo ID. Ho tentato di fare con la seguente, che illustra anche che non funziona!

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

Cosa c’è di sbagliato con il mio codice di cui sopra, il che significa che l’id sembra essere cambiata, ma non raccolse il DOM? Molte grazie in anticipo.

Come è obj ricevuto?
In quali browser hai riprodurre questo caso ?
Ha “obj” è stato aggiunto al documento?

OriginaleL’autore user455141 | 2010-09-24

7 risposte

  1. 3

    Il codice che vedi non funziona; il problema è probabilmente nel codice che guarda in alto e assegna obj. La mia ipotesi è che questo è solo un oggetto javascript, non una parte di un albero DOM.

    grazie a voi – che era esattamente il problema!

    OriginaleL’autore Aaron Digulla

  2. 5

    Dal momento che non ci danno il codice intero la mia ipotesi è che probabilmente avete qualcosa di simile a questo nel codice

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

    In questo caso particolare, document.getElementById("newID") non restituiscono nulla, dato che l’elemento non è stato aggiunto alla pagina e quindi non presenti nella pagina.

    OriginaleL’autore HoLyVieR

  3. 3

    Non c’è nessun motivo per cui questo non dovrebbe lavorare con puro JavaScript. Ecco una lavoro violino che mostra il lavoro. Non c’è bisogno di un jQuery soluzione o qualsiasi altro metodo JavaScript, id = "foo";è il modo più semplice di modifica di un oggetto DOM ID.

    Dare un’occhiata al mio sopra il violino e provare e vedere che cosa è la differenza tra il codice e la mia.

    OriginaleL’autore djdd87

  4. 1

    Il codice sembra corretto, anche se sei di commentare in quel modo nel codice, è possibile rendersi conto che la brace non è mai chiusa a causa del commento.

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

    OriginaleL’autore dytrivedi

  5. 0

    Provare questo:

    Funziona per me

    <!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>
    Non utilizzare javascript: in onclick attributi; è inutile (in realtà, si è semplicemente l’assegnazione di un JavaScript etichetta in questo modo).
    era solo di essere esplicito. sono modificati e rimossi.

    OriginaleL’autore jimplode

  6. 0

    C’è un’altra cosa da considerare. Stai cercando di fare questo prima che il DOM è pronto? È quell’elemento caricato di sicurezza? Se si tenta di modificare un elemento del DOM non ha nella struttura potrete tranquillamente fallire.

    OriginaleL’autore AutoSponge

  7. -2

    Sì, è possibile, qui è una soluzione con jquery

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

    o

    getElementById("xxx").setAttribute("id", "yyy");
    -1 L’OP non ha specificato che desidera utilizzare jQuery e questo dovrebbe essere realizzabile utilizzando puro JavaScript. Questo non risponde alla sua domanda su come mai l’id è cambiato, ma non ha trovato di nuovo da getElementById.
    il javascript è equivalente obj.setAttribute(“id”,”yourid”)
    in realtà obj.id="foo"; è il più semplice equivalente.
    non utilizzare setAttribute per cambiare il id di un elemento DOM, vale a dire fuori di testa…

    OriginaleL’autore Fribu – Smart Solutions

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *