Visualizzazione risultati 1 fino 4 di 4

Discussione: Stampare codice HTML con JS, invece delle entità

  1. #1
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito Stampare codice HTML con JS, invece delle entità

    Salve a tutti,

    ho un problema. Ho creato una funzione in js che viene richiamata in <body onload>

    Questo è il codice:

    Codice PHP:
    var vettore = new Array();

    vettore[0] = new Array(1, "Testo 1", "24-01-15, 11:36");
    vettore[1] = new Array(0, "Testo 2", "24-01-15, 11:36");
    vettore[2] = new Array(1, "Testo 3", "24-01-15, 11:36");



    function
    prendivettore() {
    for(
    i=0;i<vettore.length;i++) {
    document.getElementById('paragrafo').innerHTML += "<div class='";
    if(
    vettore[i][0] == 1) {
    document.getElementById('paragrafo').innerHTML += 'grigio';
    } else {
    document.getElementById('paragrafo').innerHTML += 'nero';
    }
    document.getElementById('paragrafo').innerHTML += "'>" + vettore[i][1] + '<br>' + vettore[i][2] + "</div>\n";
    }
    }
    Il fatto è che nel <div id="paragrafo"> il primo carattere che deve visualizzare, cioè <, lo visualizza come &lt;, tutti gli altri invece me li mette normalmente, compromettendomi così il funzionamento dello script.
    Lo fa solo al primo richiamo DOM che sostituisce i caratteri speciali con entità html, agli altri 3 DOM non lo fa.


    Come posso risolvere?


    Grazie,
    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Prova preparando la stringa prima, successivamente fai una sola chiamata innerHTML, del tipo:

    Codice:
    function prendivettore() { 
    var stringa = '';
    for(i=0;i<vettore.length;i++) { 
    stringa += "<div class='"; 
    if(vettore[i][0] == 1) { 
    stringa += 'grigio'; 
    } else { 
    stringa += 'nero'; 
    } 
    stringa += "'>" + vettore[i][1] + '<br>' + vettore[i][2] + "</div>\n"; 
    } 
    document.getElementById('paragrafo').innerHTML = stringa;
    }
    Ciao!

  3. #3
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Non puoi andare a scrivere la proprietà innerHTML in quel modo, aggiungendo volta per volta dei pezzi di codice. Usa piuttosto una variabile temporanea e scrivi tutto insieme.
    Il problema è che ogni volta che assegni un valore alla proprietà, questo attiva il parser HTML e se il codice non è completo è normale che accadano cose strane. Ed ogni volta che vai a leggere da quella proprietà ciò che ottieni è la serializzazione del contenuto che quindi non è necessariamente la medesima stringa che hai assegnato in precedenza.
    Ad ogni modo la cosa migliore sarebbe usare i vari metodi del DOM per alterare l'albero del documento, come createElement e appendChild.

  4. #4
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    Grazie a tutti e due, ora con la variabile di servizio il tutto funziona!



    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •