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

    creazione e cancellazione di <div> in base al proprio id

    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 "cancella" per cancellare
    - appare link "commento" (creato con DOM per inserire altro messaggio in coda)

    questa è la funzione per la eliminazione del div (contenente il messaggio utente) e del link per cancellare il div
    codice:
    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... bisogna forse usare ajax? o qualche altro mezzo?
    Perpetual Ribellion With Absolutely No Cause

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    codice:
    function delMessage(myObj) {
      var divToDel = myObj.previousSibling.previousSibling;  //div con messaggio
      var linkToDel = myObj;  //link per cancellare
      ...
    }
    
    cancella

  3. #3
    Originariamente inviato da Vindav
    codice:
    function delMessage(myObj) {
      var divToDel = myObj.previousSibling.previousSibling;  //div con messaggio
      var linkToDel = myObj;  //link per cancellare
      ...
    }
    
    cancella
    non ho capito... allora onClick="delMessage(this)" this sarebbe il riferimento all'id del div?

    e nella funzione le varibili divToDel al posto di myObj ci andrebbe l'id a sto punto?.. sono un po' confuso...
    Perpetual Ribellion With Absolutely No Cause

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    this è il riferimento all'oggetto cliccato(<a>)

    myObj.previousSibling.previousSibling

    cosi invece recuperi il div, prova il codice che ti ho postato prima... dovrebbe funzionare

  5. #5
    ok!! alla fine l'ho modificato così:
    codice:
    function delMessage(myObj) {
    	
    	var divToDel = myObj.nextSibling;  //div con messaggio
      	var linkToDel = myObj;  //link per cancellare
    	var bodyTags = document.getElementsByTagName("body");
    	var thisBody = bodyTags[0];
    	thisBody.removeChild(divToDel);
    	thisBody.removeChild(linkToDel);
    }
    con myObj.nextSibling;

    ovviamente non vedendo il codice non potevi saperlo che il div veniva dopo il link, porca miseria non sapevo del this in delMessage(this); e non avevo proprio pensato alla gestione tramite Sibling!!! Ti ringrazio tantissimo! Devo ripassarmi molto bene il DOM in generale!
    Perpetual Ribellion With Absolutely No Cause

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.