Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Impostare ID

  1. #1

    Impostare ID

    Ciao a tutti ragazzi non riesco a capire cos'è che non và al mio script (premetto che sono alle prime armi):

    <script type="text/javascript">
    function cambio(){
    var contenuto=document.getElementById("contenuto");
    var p=document.createElement("p");
    p.setAttribute("align","center");
    p.appendChild(document.createTextNode("Ciao a tutti"));
    contenuto.appendChild(p);
    }
    function conta(){
    for (c=0;c<p.length;c++){
    p.setAttribute("id",c);
    alert(p.getAttribute("id"));
    }
    }
    function rimuovi(){
    for (c=0;c<p.length;c++){
    var x=document.getElementById(c)
    contenuto.removeChild(x);
    }
    }
    </script>

    Grazie a tutti
    Saluti

    Marco

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma cos'e' per te "p"? lo definisci all'interno di una funzione (e' quindi una variabile locale) e poi lo richiami nelle altre come se fosse un array
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    come p intendo la creazione di un nuovo elemento P.
    come potrei risolvere a tuo parere?

    Grazie per la risposta
    Marco

  4. #4
    Non va quello che ti diceva br.

    Tu crei un elemento che nel tuo javascript chiami p, e ok.

    Poi però nelle altre funzioni lo usi come un elemento iterabile, cioè scansionabile con un ciclo for: non lo è.

    Inoltre quando tu scrivi

    for (c=0;c<p.length;c++){
    var x=document.getElementById(c)

    l'espressione non ha senso: c è un numero (infatti in partenza è: c=0), non un oggetto DOM (=html) per cui la funzione getElementById non fa nulla perchè deve operare su oggetti dom.

    Certo, potrebbe essere che tu hai messo dei tag html con id numerici (brutta idea), ma credo piuttosto che si tratti invece di un errore concettuale visto che dici di essere alle prime armi.

    Quello che nonti è chiaro è il concetto di tipo dati.
    Una cosa sono i numeri.
    Una altra gli oggetti html
    Una altra le array

    Inoltre, come ti diceva br, richiami p nelle altre funzioni dando per scontato che esse sappiano cosa è: ma non lo sanno.
    Bisogna che studi ancora un paio di settimane di javascript perchè allo stato le tue idee sono ancora piuttosto confuse (non è una colpa sia chiaro!).
    Comunque va bene anche fare esperimenti sbagliatissimi come questi - è sbagliando che si impara.

  5. #5
    Ti ringrazio per la risposta
    Ho capito ciò che mi avete detto ed ho cercare di formulare il tutto e sembra andare, potete cortesemente buttarci giusto un'occhio? Grazie!!

    <script type="text/javascript">
    function cambio(){
    n=prompt("Quanti elementi P vogliono essere creati?");
    tagp=document.getElementsByTagName("p");
    iid=tagp.length+1;
    contenuto=document.getElementById("contenuto");
    if (isNaN(n))
    alert("Intendo un numero!");
    else{
    tot=n-tagp.length;
    for (c=0;c<tot;c++){
    frase=prompt("Inserire frase numero " + iid);
    p=document.createElement("p");
    p.setAttribute("id",iid);
    p.setAttribute("align","center");
    p.appendChild(document.createTextNode(frase));
    contenuto.appendChild(p);
    iid=iid+1;
    }
    }
    }

    function rimuovi(){
    n=prompt("Quanti elementi P vogliono essere eliminati?");
    tagp=document.getElementsByTagName("p");
    x=tagp.length;
    for (c=0;c<n;c++){
    contenuto.removeChild(document.getElementById(x));
    x=x-1;
    }
    }
    </script>

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Certo, potrebbe essere che tu hai messo dei tag html con id numerici (brutta idea)
    L'unica cosa che potresti cambiare è l'id che dai ai tag creati... come detto da TrueLies non è mai buona idea dare dei valori numerici agli id.
    Potresti fare una cosa del genere:

    codice:
    p.setAttribute("id","elemP"+iid);
    Per poi rimuoverlo con:

    codice:
    contenuto.removeChild(document.getElementById("elemP"+x));
    Per il resto mi pare tutto corretto.

  7. #7
    Grazie a tutti e scusate per la perdita di tempo
    Ancora grazie

    Saluti
    Marco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.