Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    setAttribute("id", .. impostare variabile con valore incrementabile

    Ciao a tutti,
    sto ideando un sistema DOM per la pubblicazione di messaggi, sono semplici, ogni messaggio viene incluso e stampato in un <div> dopo la pressione del link "invia". Per essere chiaro i passaggi sono questi:

    1. click su link "commento" (presente inizialmente su pagina, non creato con DOM)
    - appare textarea
    - appare link "invia"

    2. click su link "invia"
    - appare div con il commento
    - appare link "X" per cancellare
    - appare link "commento" (creato con DOM per inserire altro messaggio in coda)

    ora, il problema sta nel fatto che assegnando automaticamente l'id al div del commento ogni div si ritrova con lo stesso id, per cui quando si clicca sul link "X" che contiene la funzione per cancellare il messaggio, i messaggi non si cancellano in ordine di creazione, ma dal primo arrivando all'ultimo. In pratica se clicco sulla X dell'ultimo messaggio in coda mi si cancella il primo dell'elenco.. e via dicendo..

    Come posso fare per ciclare il tutto senza attribuire lo stesso id a ogni div? posso assegnare una varibile incrementabile in qualche modo al setAttribute("id", ... )? In modo da avere per esempio degli id: messaggio1 ... messaggio2 ... messaggio3 ... ecc..

    Qualcuno può aiutarmi?
    Perpetual Ribellion With Absolutely No Cause

  2. #2
    codice:
    	var divid=1;
    	while(document.getElementById('messaggio'+divid)){
    		alert('il div messaggio'+divid+ 'è già usato');
    		divid++;
    	}
    	alert('primo libero è: messaggio'+divid);

  3. #3
    questa è la funzione per la eliminazione del div (contenente il messaggio utente) e del link per cancellare il div
    codice:
    function delMessage() {
    	
    	var divToDel = document.getElementById("mess"+Num);  //div con messaggio
    	var linkToDel = document.getElementById("delMess"+Num);  //link per cancellare
    	var bodyTags = document.getElementsByTagName("body");
    	var thisBody = bodyTags[0];
    	thisBody.removeChild(divToDel);
    	thisBody.removeChild(linkToDel);
    }
    ogni div e ogni link "cancella" che viene creato ottengono un id progressivo dato dalla varibile globale "Num", la quale viene aumentata di 1 per ogni messaggio creato, ottengo così una situazione:

    <div id="mess1">
    messaggio utente...
    </div>
    cancella

    <div id="mess2">
    messaggio utente...
    </div>
    cancella

    <div id="mess3">
    messaggio utente...
    </div>
    cancella

    il problema è che la funzione delMessage() richiamata da ogni link "cancella" prende come riferimento "l'ultimo" valore della varibile Num.. la quale per esempio dopo la creazione di 3 messaggi assume il valore "3". Così facendo quando si clicca su qualsiasi dei tre cancella viene cancellato solo il div con valore "mess3"..

    Mi sto scervellando per capire come poter fare a cancellare ogni div con il suo cancella... sono nel pallone...
    Perpetual Ribellion With Absolutely No Cause

  4. #4
    forse è meglio se posto una nuova discussione in merito..
    Perpetual Ribellion With Absolutely No Cause

  5. #5
    onClick="delMessage(this.id);

  6. #6
    prego, non c'è di che...

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.