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

    sostituzione di un Textnode con un altro

    Spero in un vostro aiuto, non conosco benissimo javascript. Ho una funzione che crea un textnode dentro un <td> di una tabella, richiamata con onclick su una immagine che funge da pulsante:

    // la funzione crea un nodo di testo dentro la cella di una tabella, al posto di 'id' viene inserito // l'id della cella, al posto di 'txt' il testo che deve comparire. Questa funzione viene eseguita // correttamente, senza errori.

    function makeTxt(id,txt){
    if (document.getElementById && document.createTextNode){
    var obj = document.getElementById(id);
    frase = document.createTextNode(txt);
    obj.appendChild(frase);
    }
    }


    Ho poi creato una funzione che, sempre con onclick ma su un'altra immagine, rimpiazza il TextNode appena creato con un altro nuovo:

    // Anche questa si esegue correttamente.

    function replaceTxtNode(id,txt)
    {
    if(document.getElementById && document.createTextNode)
    {
    var obj = document.getElementById(id);
    obj.replaceChild(document.createTextNode(txt),obj. firstChild);

    }
    }

    Siccome quando richiamavo replaceTxtNode, veniva creato un nuovo nodo che però non cancellava quello precedente (praticamente, davanti al nodo della prima funzione, si piazzava il secondo nodo; però il primo nodo restava ugulamente visibile nella cella, attaccato al secondo), ho tentato di usare innerHTML per provare a pulire la cella:

    function replaceTxtNode(id,txt)
    {
    if(document.getElementById && document.createTextNode)
    {
    var obj = document.getElementById(id);
    // qui ho cercato di svuotare la cella, in modo da visualizzare soltanto il nuovo nodo
    if (obj.innerHTML != ""){
    obj.innerHTML = "";
    }
    // fine delle modifiche
    obj.replaceChild(document.createTextNode(txt),obj. firstChild);

    }

    Purtroppo in questo modo replaceTxtNode non funziona più correttamente. Sapete come posso procedere per sostituire totalmente il contenuto della cella?

    Grazie in anticipo per l'aiuto !

  2. #2
    Ho risolto. Mancava un punto esclamativo davanti a obj.innerHTML . La sintassi correttà è:

    if (!obj.innerHTML != ""){
    obj.innerHTML = "";
    }


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 © 2026 vBulletin Solutions, Inc. All rights reserved.